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_Testing_Karma Runner - Fatal编程技术网

Angularjs 多依赖角控制器的测试

Angularjs 多依赖角控制器的测试,angularjs,unit-testing,testing,karma-runner,Angularjs,Unit Testing,Testing,Karma Runner,我已经开始测试我的Angular应用程序,有一个问题困扰了我很多。例如,我有一个控制器(mainController),它正在注入2个服务:authService、configService 在测试之前,我应该准备以下内容: describe('controller: testController with testService mock', function() { var controller, authService, configService; befo

我已经开始测试我的Angular应用程序,有一个问题困扰了我很多。例如,我有一个控制器(mainController),它正在注入2个服务:authService、configService

在测试之前,我应该准备以下内容:

describe('controller: testController with testService mock', function() {      
    var controller, authService, configService;

    beforeEach(module('app'));

    beforeEach(inject(function($controller, _authService_, _configService_) {         
        authService = _authService_;
        configService = _configService_;

        controller = $controller('mainController');
    }));    

    it('should be registered with all dependencies', function() {
        expect(controller).to.be.defined;

        expect(authService).to.be.defined;
        expect(configService).to.be.defined;
    });

}
这对我来说是完全清楚的。如果其中一个或两个服务都有自己的依赖项(服务),该怎么办?当然,我要通过传递inject函数来添加它。在小型应用程序中,这不是什么大问题。我正在添加所需的服务。但问题是,如果这些服务正在注入其他服务,而其他服务正在注入其他服务,并且存在巨大的层次结构,该怎么办?如果我们必须增加30项服务,并且我们不能犯错误,否则它将无法工作,该怎么办

老实说,我搜索了很多,但有很多测试示例和教程,但每一个都是基于基本的应用程序,很少有控制器和服务

有没有无痛的方法来处理这个问题?也许有一种方法可以跳过某些依赖项,或者强制使用依赖项自动注入服务

如果其中一个或两个服务都有自己的依赖项(服务),该怎么办?当然,我要通过传递inject函数来添加它

不,你不会的。Angular将实例化这些服务,并在需要注入的地方注入它们,前提是它们位于“应用程序”模块或其依赖项之一

没有理由向测试中注入任何服务,除非您需要对它们做一些事情,比如调用它们的方法之一,或者监视它们

如果其中一个或两个服务都有自己的依赖项(服务),该怎么办?当然,我要通过传递inject函数来添加它

不,你不会的。Angular将实例化这些服务,并在需要注入的地方注入它们,前提是它们位于“应用程序”模块或其依赖项之一


没有理由向您的测试中注入任何服务,除非您需要对它们执行某些操作,比如调用它们的一个方法,或者监视它们。

好的,但是如果我不这样做,我会在“每个钩子失败之前”出错。出什么问题了?当你询问一个错误时,在问题中发布导致错误的代码,以及你得到的完整错误消息和堆栈跟踪。好的,但如果我不这样做,我会在“每个钩子失败之前”出现错误。出了什么问题?当您询问错误时,请在问题中发布导致错误的代码,以及您得到的完整错误消息和堆栈跟踪。