2015-09-30 2 views
-2

Я пытаюсь написать тестовый пример для пользовательских директив с Jasmine. В настоящее время, у меня есть директивы, который устанавливается, как показано здесь: Это мой код в стельку http://jsfiddle.net/aHmPV/33/Как я могу проверить пользовательскую директиву в jasmine

app.directive('focusMe', function ($timeout) { 
return { 
    scope: { trigger: '=focusMe' }, 
    link: function (scope, element) { 
     scope.$watch('trigger', function (value) { 
      if (value === true) { 
       element[0].focus(); 

      } 
     }); 
    } 
}; 

});

Мой жасмин код в стельку Я пробовал разные способы тестирования $ функции часы не в состоянии достигнуть этого, пожалуйста, помогите

+0

Что вы пробовали? Очень ценю, если вы проявите некоторые усилия, а затем зададите вопрос о конкретной проблеме. – venerik

ответ

0

Вы настроены $ смотреть на scope.trigger, но передается в focus-me.

Вы можете использовать spyOn для element[0].focus и создать тест для focus-me="true" и focus-me="false":

describe('Directive: focusMe', function() { 
    var element, 
     scope; 

    beforeEach(module('CommonBusInfo')); 
    beforeEach(inject(function($rootScope) { 
     scope = $rootScope.$new(); 
    })); 

    it("should focus if focus-me is true", inject(function($compile) { 
     element = angular.element('<input type="text" focus-me="true" value="chaitu">'); 
     element = $compile(element)(scope); 
     spyOn(element[0], 'focus'); 

     scope.$digest(); 

     expect(element).toBeDefined(); 
     expect(element[0].focus).toHaveBeenCalled(); 
    })); 

    it("should NOT focus if focus-me is falsy", inject(function($compile) { 
     element = angular.element('<input type="text" focus-me="" value="chaitu">'); 
     element = $compile(element)(scope); 
     spyOn(element[0], 'focus'); 

     scope.$digest(); 

     expect(element).toBeDefined(); 
     expect(element[0].focus).not.toHaveBeenCalled(); 
    })); 
}); 
+0

Спасибо, Цукер, это сработало для меня – CNandamuri

+0

вы можете проверить это сообщение один раз http://stackoverflow.com/questions/32879799/unit-testing-directive-with-angularjs-jasmine/32881517#32881517 – CNandamuri

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