我在使用ng-mouseenter指令测试我的指令时遇到了麻烦。
我想测试几件事,但首先,我需要测试调用提供给ng-mouseenter的方法。
我的测试:
describe('hover tests', function () {
it('the triggerPopover method should be called on hover', function() {
spyOn($scope, 'triggerPopover');
var ars = jQuery(view.find('article.the-class-im-looking-for'));
jQuery(ars[0]).trigger('mouseenter');
expect($scope.triggerPopover).toHaveBeenCalled();
});
});
我的指令使用:
<article my-directive ng-mouseenter="triggerPopover();"></article>
结果:
预期的间谍触发器已被调用。 ng-mouseenter的东西似乎没有被称为
答案 0 :(得分:0)
如果您使用PhantomJS进行测试,那么在普通浏览器中工作的某些鼠标事件将无效。 如果确实如此,您可以使用Chrome或Firefox运行测试,或者针对相关问题为this answer实施类似的解决方案。
答案 1 :(得分:0)
mouseenter
作为原生DOM事件:http://www.quirksmode.org/dom/events/index.html
ng-mouseenter
以mouseover
事件为基础,因此您可以像这样触发它:
jQuery(ars[0]).trigger('mouseover');