Первый раз, когда я пишу вопрос о Stack;) У меня есть проблема с тестированием $ mdSidenav (компонент углового материала см. https://material.angularjs.org/). В моем контроллере у меня есть что-то вроде:
$scope.toggleRight = function() {
$mdSidenav('right').toggle();
};
Я хочу, чтобы проверить его. Таким образом, в моем тестовом файле я создал, в первую очередь, макет этого объекта:
var $mdSidenav = function(test){
return {
toggle: function(){
return true;
}
};
};
beforeEach(inject(function ($controller) {
$scope = $rootScope.$new();
createController = function() {
return $controller('headerCtrl', {
'$scope': $scope,
'$mdSidenav': $mdSidenav
});
};
}));
Тогда я пытаюсь проверить:
describe('toggleRight method', function(){
beforeEach(function(){
spyOn($mdSidenav('right'), 'toggle').and.callThrough();
});
it('Should toggleRight open/close', function(){
$scope.toggleRight();
expect($mdSidenav('right').toggle).toHaveBeenCalled();
});
});
Но карма отправить мне эту ошибку:
Error: Expected a spy, but got Function.
Я надеюсь, что кто-то может мне помочь;)
Ty за ответ! Но что такое «синус»? Я не понимаю ...;) –
Sinonjs.org - это просто отличный способ шпиона, заглушки или макета в Javascript. Вы можете использовать Jasmine вместо этого, вместо того, чтобы заменить использование sinon кодом Jasmine. –