【发布时间】:2016-01-08 16:04:56
【问题描述】:
我正在测试一个使用返回承诺的服务的控制器。我在测试中模拟了一项服务并创建了一个spy,以便我可以测试该服务是否被实际调用。
但我不断收到此错误
TypeError: 'undefined' is not a function
(evaluating 'spyOn(mockService, 'one').andReturn(deferred.promise)')
我的测试
beforeEach(inject(function($rootScope, $controller, $q) {
scope = $rootScope.$new();
mockService = {
one: function(){
// mock promise
var deferred = $q.defer();
deferred.resolve([
//my array
]);
return deferred.promise;
},
two: function(){
// mock promise
var deferred = $q.defer();
deferred.resolve([
//my data
]);
return deferred.promise;
}
}
var deferred = $q.defer();
spyOn(mockService, 'one').andReturn(deferred.promise);
controller = $controller('MyCtrl', {
$scope: scope,
mockService: mockService
});
}));
it('should call mockService service', function(){
//causes promises to check to see if they are fulfilled
scope.$digest();
expect(mockService.one).toHaveBeenCalled();
});
【问题讨论】:
-
你用的是哪个版本的茉莉花?
-
更正:jasmine 2.4.1版
标签: javascript angularjs unit-testing karma-jasmine