我不明白为什么我总是遇到这个异常。服务位于一个模块中,助手(被测单元)位于另一个模块中。我正在尝试模拟该服务(这是助手的依赖项)并创建注入(inject)该模拟服务的助手。
感谢您的任何想法!
TypeError: 'undefined' is not a function (evaluating 'jasmine.spyOn(myService, 'someData')')
这是测试:
describe('myHelper test', function () {
var myHelper, myService;
var expectedData = 'test';
beforeEach(module('serviceModule'));
beforeEach(module('helperModule'));
it('works', function() {
module(function($provide) {
$provide.service('myService', function() {
someData = jasmine.spyOn(myService, 'someData').and.callFake(function(){
return 100; });
});
});
var mockMyService;
inject(function(myService){
mockMyService = myService;
});
angular.module('helperModule').config(['myHelperProvider', function (myHelperProvider) {
return myHelper(mockMyService, _);
}]);
expect(myHelper.someData()).toEqual(expectedData);
});
});
最佳答案
如果您正在使用 spyOn
,那么您应该在测试中注入(inject)真正的服务,然后执行 spyOn
。
inject(function(myService){
jasmine.spyOn(myService, 'someData').and.callFake(function(){
return 100; });
});
mockMyService = myService;
});
当前您正在尝试通过注入(inject)原始服务myService
来创建模拟服务myService
(这也有错误,因为您还没有完成原始服务的注入(inject))!
关于angularjs - “未定义”不是函数 - AngularJS 的 Jasmine 单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31060752/