gpt4 book ai didi

angularjs - 测试具有许多依赖项的 Angular Controller

转载 作者:行者123 更新时间:2023-11-28 20:54:13 25 4
gpt4 key购买 nike

我已经开始测试我的 Angular 应用程序并且有一个问题困扰着我很多。例如,我有 Controller (mainController),它正在注入(inject) 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)函数来添加它。在小型应用程序中,这不是大问题。我正在根据需要添加尽可能多的服务。但问题是,如果该服务正在注入(inject)其他服务,而其他服务正在注入(inject)其他服务并且存在巨大的层次结构怎么办?如果我们必须添加 30 项服务并且我们不能出错怎么办,否则它将无法工作?

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

有没有一种轻松的方法来处理这个问题?也许有一种方法可以跳过一些依赖项或强制自动注入(inject)服务及其依赖项?

最佳答案

What if one of services or both have their own dependencies (services) ? Of course I'm gonna add it by passing through the inject function

不,你不会。 Angular 将实例化这些服务并将它们注入(inject)到需要注入(inject)的位置,前提是它们位于“app”模块或其依赖项之一中。

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

关于angularjs - 测试具有许多依赖项的 Angular Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32226161/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com