Javascript angularJS:如何用spyOn模拟localStorgaeService?
我有一个这样实现的简单服务Javascript angularJS:如何用spyOn模拟localStorgaeService?,javascript,angularjs,mocking,Javascript,Angularjs,Mocking,我有一个这样实现的简单服务 sameRoof .factory('dbService', function (localStorageService, backendUpdate) { return { checkProfileAndFlat: function () { return (localStorageService.get('profile') && localStorageService.get('flatshare'));
sameRoof
.factory('dbService', function (localStorageService, backendUpdate) {
return {
checkProfileAndFlat: function () {
return (localStorageService.get('profile') && localStorageService.get('flatshare'));
}
};
});
LocalStorage是与bower一起安装的模块
我正在写单元测试
'use strict';
describe('Service: service taking care of asking the local database', function () {
var localStorageService;
var fakeDB = {'profile' : 'testProfile', 'flatshare' : 'flatshare'};
// load the service's module
beforeEach(module('frontApp'));
// instantiate service
var dbService;
beforeEach(inject(function (_dbService_, _localStorageService_) {
dbService = _dbService_;
localStorageService = _localStorageService_;
//mock localStorageService get/add
spyOn(localStorageService,'get').andCallFake(function(key){
return fakeDB[key];
});
}));
it('should check profile and flatshare', function () {
console.log(localStorageService.get('profile'));
expect( dbService.checkProfileAndFlat() ).toBe(false);
});
});
但我这里有问题
TypeError:“undefined”不是函数(正在计算“spyOn…”)
似乎我用错误的方式实现了间谍答案是
//mock localStorageService get/add
spyOn(localStorageService,'get').and.callFake(function(key){
return fakeDB[key];
});
由于我使用的是jasmine 2.3.4,与1.3相比,jasmine API发生了变化,答案是
//mock localStorageService get/add
spyOn(localStorageService,'get').and.callFake(function(key){
return fakeDB[key];
});
由于我使用的是jasmine 2.3.4,与jasmine 1.3相比,jasmine API已经发生了变化。什么版本的jasmine?我将假设您对2.0+的看法,并在这里向您介绍:@CainBot甚至不使用.and.fakecall假设您的意思是“and.callFake”?非常感谢。在小写情况下,C是callFake什么版本的Jasmine?我将假设你在2.0+上的版本,并在这里介绍你:@CainBot甚至不与.and.fakeCall一起工作?假设你的意思是“and.callFake”?非常感谢。在小写字母中,它是C