Javascript 如何解决类型错误:spyOn andReturn不是一个函数?

Javascript 如何解决类型错误:spyOn andReturn不是一个函数?,javascript,karma-runner,karma-jasmine,Javascript,Karma Runner,Karma Jasmine,我正在尝试运行服务的jasmine单元测试。我模拟了$location,但出现了一个错误: app.factory('testService', function($location) { return { config: function() { var host = $location.absUrl(); var result = ''; if (host.indexOf('localhost') >= 0) { re

我正在尝试运行服务的jasmine单元测试。我模拟了$location,但出现了一个错误:

app.factory('testService', function($location) {
  return {
    config: function() {
      var host = $location.absUrl();

      var result = '';

      if (host.indexOf('localhost') >= 0) {
        return 'localhost'
      }

      if (host.indexOf('myserver') >= 0) {
        return 'myserver'
      }

    }

  };
});
我的测试如下所示:

describe('testing service', function () {
    var configService, $rootScope, $location;

    beforeEach(module('myApp'));
    beforeEach(inject(function (_$location_) {
        //$rootScope = _$rootScope_;
        $location = _$location_;
        //configService=_configService_;
        spyOn($location, 'absUrl').andReturn('localhost');
    }));

    it('should return something  ', function () {
        inject(function (configService) {
            //expect($location.absUrl).toHaveBeenCalled();
            //expect($rootScope.absUrl()).toBe('localhost');

            var result= configService.config($location);
            expect(result).toBe('localhost');
        });
    });
});
这就是我得到的错误:
类型错误:spyOn(…)。andReturn不是函数?

jasmine 2.0更改了一些spy语法

请使用:

spyOn($location, 'absUrl').and.returnValue('localhost');