2013-08-06 5 views
1

Я бы хотел (unit) проверить мое приложение AngularJS, не прибегая к использованию jQuery, поскольку jQuery заменит jqLite, а в реальном приложении jQuery также не будет доступен. Существуют реальные различия между jQuery и jqLite, поэтому наличие jQuery, доступного для AngularJS в модульных тестах, является риском.Размытие поля без использования jQuery

Большинство моих тестов отлично работают без jQuery, но мне нужно размыть поле, что-то, что я могу узнать, как это сделать, используя jQuery. Как я могу сделать это в Javascript в режиме браузера?

UPDATE: После получения ответа, я решил его с помощью triggerHandler(), но не в самой директиве, но в тестовом модуле, как это:

it("should set the blur state on blur", function() { 
    angular.element(elm[0][0]).triggerHandler("blur"); 
    expect($rootScope.passwordblur).toBe(true); 
}); 
+0

Вы также можете использовать угловой интерфейс @ http://angular-ui.github.io/ui-utils/ –

ответ

1

Почему бы не попробовать директивы:

app.directive('blurable', function() {   
     return { 
      link: function(scope, element) {    
       element.bind("blur" , function(e){ 
        // blur happens 
       }); 
       scope.triggerBlur = function(){ 
        element.triggerHandler("blur"); 
       } 
      } 
     } 
    }); 

Итак, теперь в вашем scope вы можете запустить этот метод triggerBlur для «ручного» размытия.
Plunk: http://plnkr.co/edit/wPqRqh

+0

приятный, никогда не видел эту функцию раньше! – Maarten

+0

@Maarten, но я не знаю, является ли этот стиль хорошей практикой в ​​контексте модульного тестирования ... – Cherniv

+0

Думайте, что все в порядке; блок тестируется с реальным событием, только имитируется триггер, но всегда есть определенное согласие с симуляцией с заглушками и т. д. Если другие думают иначе, дайте мне знать – Maarten

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