我无法弄清楚为什么我会一直得到这个例外。该服务在一个模块中,帮助者(被测单元)在另一个模块中。我试图模拟服务(这是帮助程序的依赖项)并创建帮助程序注入该模拟服务。
感谢您的任何想法!
TypeError:' undefined'不是一个功能(评估 ' 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);
});
});
答案 0 :(得分:2)
如果您使用spyOn
,那么您应该在测试中注入真实服务,然后执行spyOn
。
inject(function(myService){
jasmine.spyOn(myService, 'someData').and.callFake(function(){
return 100; });
});
mockMyService = myService;
});
目前,您正尝试通过注入原始服务myService
来创建模拟服务myService
(也有错误,因为您尚未注入原始服务)!