Angularjs 多依赖角控制器的测试
我已经开始测试我的Angular应用程序,有一个问题困扰了我很多。例如,我有一个控制器(mainController),它正在注入2个服务:authService、configService 在测试之前,我应该准备以下内容: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
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将实例化这些服务,并在需要注入的地方注入它们,前提是它们位于“应用程序”模块或其依赖项之一
没有理由向您的测试中注入任何服务,除非您需要对它们执行某些操作,比如调用它们的一个方法,或者监视它们。好的,但是如果我不这样做,我会在“每个钩子失败之前”出错。出什么问题了?当你询问一个错误时,在问题中发布导致错误的代码,以及你得到的完整错误消息和堆栈跟踪。好的,但如果我不这样做,我会在“每个钩子失败之前”出现错误。出了什么问题?当您询问错误时,请在问题中发布导致错误的代码,以及您得到的完整错误消息和堆栈跟踪。