Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
angularjs单元测试-模拟服务内部服务_Angularjs_Unit Testing_Jasmine - Fatal编程技术网

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

angularjs单元测试-模拟服务内部服务,angularjs,unit-testing,jasmine,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= {

我正在测试服务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提供程序您可以使用如下代码将模拟服务(服务B)注入服务A:

beforeEach(module(function($provide) {

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

我已经试过了,它成功了……问题的原因是使用了$provide.service……。但我不明白为什么我们需要使用$provide.constant而不是$provide.service???@我认为可以从中找到解释。不能肯定地说,但是使用
constant()
是在Angular的“配置”阶段创建服务的一种方法。因此,实际上,您是在正常创建模拟服务之前创建它的。