admin管理员组文章数量:1327699
I have implemented an angularjs directive that use mouse event; clicking on ponent and moving mouse up or down it can changes a value. So i need to know how do I trigger a mousemove event in a unit test (i use karma/jasmine); I'd like to have a suggestion to testing this ponent when mouse goes up or down in an unit test.
Component template is something like that:
<div class="rotativeContent">
<p class="rotativeLabel">{{label}}</p>
<pie class="zero"></pie>
<p class="rotativeValue">{{ngModel}}</p>
<input type="hidden" ng-model="ngModel"/>
</div>
and javascript code is:
var Component = angular.module('Components', []);
Components.directive('rotative', ['$document', function($document){
return {
require : '?ngModel',
restrict: 'E',
replace: true,
templateUrl: "templates/rotative.html",
scope: {label: "@", ngModel: "="},
link: function(scope, element, attr, ngModel) {
var value = 0;
function bindElementMove() {
element.bind('mousedown', function (event) {
$document.bind('mousemove', mousemove);
$document.bind('mouseup', mouseup);
});
}
bindElementMove();
function mousemove(event) {
// code on mouse move
// to track vertical mouse position
var prevY = element.attr('data-prevY');
if (event.pageY < prevY) {
// do something if mouse goes down
// ...
value++;
} else {
// do something if mouse goes up
// ...
value--;
}
element.attr('data-prevY', event.pageY);
ngModel.$setViewValue(value);
}
function mouseup() {
$document.off('mousemove', mousemove);
$document.off('mouseup', mouseup);
}
}
};
// ...
Also i need to simulate an variation of event.pageY. How can i do this?
I have implemented an angularjs directive that use mouse event; clicking on ponent and moving mouse up or down it can changes a value. So i need to know how do I trigger a mousemove event in a unit test (i use karma/jasmine); I'd like to have a suggestion to testing this ponent when mouse goes up or down in an unit test.
Component template is something like that:
<div class="rotativeContent">
<p class="rotativeLabel">{{label}}</p>
<pie class="zero"></pie>
<p class="rotativeValue">{{ngModel}}</p>
<input type="hidden" ng-model="ngModel"/>
</div>
and javascript code is:
var Component = angular.module('Components', []);
Components.directive('rotative', ['$document', function($document){
return {
require : '?ngModel',
restrict: 'E',
replace: true,
templateUrl: "templates/rotative.html",
scope: {label: "@", ngModel: "="},
link: function(scope, element, attr, ngModel) {
var value = 0;
function bindElementMove() {
element.bind('mousedown', function (event) {
$document.bind('mousemove', mousemove);
$document.bind('mouseup', mouseup);
});
}
bindElementMove();
function mousemove(event) {
// code on mouse move
// to track vertical mouse position
var prevY = element.attr('data-prevY');
if (event.pageY < prevY) {
// do something if mouse goes down
// ...
value++;
} else {
// do something if mouse goes up
// ...
value--;
}
element.attr('data-prevY', event.pageY);
ngModel.$setViewValue(value);
}
function mouseup() {
$document.off('mousemove', mousemove);
$document.off('mouseup', mouseup);
}
}
};
// ...
Also i need to simulate an variation of event.pageY. How can i do this?
Share Improve this question edited Feb 17, 2015 at 11:12 sergioska asked Feb 17, 2015 at 5:32 sergioskasergioska 3451 gold badge5 silver badges18 bronze badges1 Answer
Reset to default 6This blog article shows an example using jqLite's triggerHandler()
.
Triggering Events in Angular JS Directive Tests
EDIT: Okay, I made a Plunker quickly to demonstrate how you can pass parameters too: link. Check the console output to see the parameters on the event object. You can add anything your implementation might need.
So you can pass data like this for example:
elem.triggerHandler({
type : "mousemove",
pageX: 48,
pageY: 102
});
So you will need to get a handle on your element with angular.element
and then use above code to trigger events on it.
本文标签: javascriptHow do I trigger a mousemove event in an angularjs unit testStack Overflow
版权声明:本文标题:javascript - How do I trigger a mousemove event in an angularjs unit test - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1742234982a2437913.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论