Como acionar um evento mousemove em um teste de unidade angularjs
Eu implementei uma diretiva angularjs que usa evento de mouse; clicar no componente e mover o mouse para cima ou para baixo pode alterar um valor. Então, eu preciso saber como acionar um evento mousemove em um teste de unidade (eu uso karma / jasmim); Eu gostaria de ter uma sugestão para testar esse componente quando o mouse sobe ou desce em um teste de unidade.
O modelo de componente é algo assim:
<div class="rotativeContent">
<p class="rotativeLabel">{{label}}</p>
<pie class="zero"></pie>
<p class="rotativeValue">{{ngModel}}</p>
<input type="hidden" ng-model="ngModel"/>
</div>
e o código javascript é:
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);
}
}
};
// ...
Também preciso simular uma variação do event.pageY. Como posso fazer isso?