0
Я пытаюсь выполнить тестирование контроллера. Это мой контроллер:Как избежать ошибок при модульном тестировании контроллера?
app.factory('myService', function ($q) {
var callMe = function (user) {
var pr = $q.defer();
pr.resolve('Hello ' + user);
return pr.promise;
//$timeout(function(){
// pr.resolve('Hello ' + user);
// return pr.promise;
//},4000);
}
return {callMe: callMe};
});
app.controller('myCtrl',function($scope,myService){
$scope.callService = function(){
$scope.callMeValue = myService.callMe('lo');
}
})
Это мой тест:
beforeEach(
inject(function (_$rootScope_, $controller, _myService_, _myServiceTimeout_,$q) {
myService = _myService_;
myServiceTimeout = _myServiceTimeout_;
$scope = _$rootScope_.$new();
ctrl = $controller('myCtrl', {
$scope: $scope,
someService: someServiceMock
});
someServiceMock.callMe.andReturn($q.when('Ted'));
}));
it('ctrl test', function() {
$scope.callService();
expect(myService.callMe).toHaveBeenCalled();
});
Вот ошибки я получаю:
TypeError: someServiceMock.callMe.andReturn is not a function
и:
Error: Expected a spy, but got Function.
Как может Я это исправить?
plunkr: http://plnkr.co/edit/EM1blTOlg5fw5wq6OFcr?p=preview