我已经开始测试我的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;
});
}
这对我来说是完全清楚的。如果某个服务或两者都有自己的依赖项(服务)怎么办?当然我会通过注入函数来添加它。在小应用程序中,这不是什么大问题。我正在添加尽可能多的服务。但问题是如果这些服务注入其他服务而其他服务注入其他服务并且存在巨大的层次结构呢?如果我们必须添加30项服务并且我们不会犯错误,因为否则它将不起作用怎么办?
老实说,我已经搜索了很多,但是有很多测试示例和教程,但每一个都基于完全基本的应用程序,几乎没有控制器和服务。
有没有一种无痛的方式来处理这个问题?也许有一种方法可以跳过某些依赖关系或强制自动注入服务的依赖关系?
答案 0 :(得分:0)
如果某个服务或两者都有自己的依赖项(服务)怎么办?当然,我将通过注入函数
添加它
不,你没赢。 Angular将实例化这些服务并将它们注入需要注入的位置,前提是它们位于“应用程序”中。模块或其中一个依赖项。
没有理由将任何服务注入到您的测试中,除非您需要对它们执行某些操作,例如调用其中一种方法或监视它们。