假设我有这样的服务:
app.factory('dataService', function () {
return {
getData: function (item) {
var item = addClaimItem(item) ;
return true;
},
addClaimItem: function (item) {
return false;
}
}}
我的测试看起来像这样:
beforeEach(function(){
inject(function (_dataService_) {
dataService = _dataService_;
}
);
dataService.addClaimItem = jasmine.createSpy('dataService').and.returnValue(true)
});
it('should find it',function(){
expect(dataService.getData({})).toBe(false);
});
收到错误:
TypeError:'undefined'不是函数(评估'this.addClaimitem(
如何在同一服务上调用另一种方法时,如何模拟或修复此测试?
答案 0 :(得分:0)
我唯一可以考虑测试的是getData
调用addClaimItem
。要对此进行测试,您可以spy on addClaimItem
。例如
beforeEach(inject(function(_dataService_) {
dataService = _dataService_;
}));
it('getData calls through to addClaimItem', function() {
spyOn(dataService, 'addClaimItem');
var obj = {};
expect(dataService.getData(obj)).toEqual(true); // it returns true, not false
expect(dataService.addClaimItem).toHaveBeenCalledWith(obj);
});