angularjs单元测试 - 服务内部的模拟服务

时间:2014-07-24 06:32:40

标签: angularjs unit-testing jasmine

我正在测试服务A,但服务A依赖于服务B.(例如,服务B注入服务A),服务B依赖于服务C(例如服务C注入服务B)。

我在服务A中尝试过模拟服务B

 describe('Testing ServiceA', function () {
    var serviceA, serviceBMock;           
        beforeEach(function () {                 
            serviceBMock= { 
                    get: function () {
                       return 'mockReturnValue';
                    }
            };
            angular.module('serviceAMocks', [])                  
                .value('ServiceB', serviceBMock);             

        });
         beforeEach(module('serviceAMocks'));
         beforeEach(inject(function (_ServiceA_){
            serviceA=_ServiceA_;
           });

        it('Gets', function () {  
        });
  }

我收到错误:

错误:[$ injector:unpr]未知提供商:serviceC Provider< - ServiceC< - ServiceB< - ServiceA

如果我删除它阻止没有错误,如果我放置它块我得到服务C依赖错误。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

您可以使用这样的代码使Angular将您的模拟服务(服务B)注入服务A:

beforeEach(module(function($provide) {

    var serviceBMock= { 
        get: function () {
            return 'mockReturnValue';
        }
    };
    $provide.constant('serviceB', serviceBMock);
}));