2014-10-08 3 views
1

У меня возникли проблемы с тестированием моей директивы с помощью директивы ng-mouseenter.Тест на жасмин для 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> 

Результат:

Ожидаемого шпионский triggerPopover, что был назван. НГ-MouseEnter вещи, кажется, не дозвонились

+0

Есть даже DOM присутствует в тестовой среде Жасмин? Я думал, вам нужно использовать службу '$ compile'. См. Https://docs.angularjs.org/guide/unit-testing#directives – Phil

+0

Я сократил примеры кода для краткости. Все нормальные до того, как все будет сделано к моменту, когда мы доберемся до этого момента. – binarygiant

ответ

0

Если вы используете PhantomJS для ваших тестов, некоторые события мыши, которые работают в нормальных браузерах не будет работать. Если это действительно так, вы можете запустить свой тест с помощью Chrome или Firefox, или же реализовать аналогичное решение для this answer для соответствующего вопроса.

0

mouseenter как родное событие DOM не поддерживается всеми браузерами: http://www.quirksmode.org/dom/events/index.html

ng-mouseenter основывается на mouseover события, так что вы можете просто вызвать его так:

jQuery(ars[0]).trigger('mouseover'); 
+0

Поддержка 'mouseenter' улучшилась. Страница quirksmode не обновлялась с 2011 года. См. Https://developer.mozilla.org/en-US/docs/Web/Events/mouseenter#Browser_compatibility – Chic

Смежные вопросы