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