2016-06-06 4 views
0

Я хочу написать тест для метода угловой директивы в жасмине. Как проверить метод toHaveBeenCalled для .css в следующем коде? Я пытаюсь создать шпион для этого метода, но всегда получаю Expected spy css to have been called.. Хорошо ли тестировать вызов метода css?Испытательная угловая директива - angular.element.css

метод Директива для проверки:

scope.contentPadding =() => { 
    const bars = angular.element(element[0].querySelectorAll('.intro')); 
    if (bars.length > 0) { 
    const bar = angular.element(bars[bars.length - 1]); 
    bar.parent().css('padding-top', `${bar[0].offsetHeight - 10}px`); 
    } 
}; 

Моя реализация тест:

describe('test', function() { 
    var $rootScope, 
     $compile, 
     $scope, 
     $window, 
     element; 

    function compileDirective() { 
    var html = angular.element(` 
     <div my-directive-name> 
     <div class="section"> 
      <div class="intro"></div> 
     </div> 
     </div>`); 

     element = $compile(html)($scope); 
     $scope.$digest(); 
    } 

    beforeEach(function() { 
     angular.mock.module('my-directive-name'); 

     inject(function(_$rootScope_, _$compile_, _$window_) { 
     $rootScope = _$rootScope_; 
     $compile = _$compile_; 
     $window = _$window_; 

     $scope = $rootScope.$new(); 
     compileDirective(); 
     }); 
    }); 

    describe('padding', function() { 
    it('adds top padding', function() { 
     var el = angular.element(element[0].querySelector('.section')); 
     spyOn(el, 'css'); 
     $scope.contentPadding(); 
     $scope.$digest(); 
     expect(el.css).toHaveBeenCalled(); 
    }); 
    }); 
}); 
+0

Покажите нам свой текущий тест. –

ответ

0

Убедитесь, что вы шпионить угловой элемент:

it('adds top padding' function() { 
    var element = angular.element(....); 

    spyOn(element, 'css'); 

    // Trigger padding here 

    expect(element.css).toHaveBeenCalled(); 
}); 
+0

Спасибо за ответ! Я реализовал тест с вашим кодом, но порог получил ответ «Ожидаемый шпионский css, который был вызван». Я завершил свое сообщение о выполнении теста. – h3xed

+0

обязательно запустите цикл дайджеста. используя «scope. $ digest();» Попробуйте поместить его после scope.contentPadding(); –

+0

С $ scope. $ Digest() после результата вызова метода это то же самое. – h3xed

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