gpt4 book ai didi

Angular 5 测试 - 全局配置测试平台

转载 作者:太空狗 更新时间:2023-10-29 17:58:48 29 4
gpt4 key购买 nike

我想在 Angular 为 5 的 angular-cli@1.50 项目中为所有测试套件导入某些模块,例如 ngrx Store、ngx translate 或 httpClientModule。

在生成的 test.ts 中我添加了一个 test.configureTestingModule

const testBed: TestBed = getTestBed();

testBed.initTestEnvironment(
BrowserDynamicTestingModule,
platformBrowserDynamicTesting()
);

testBed.configureTestingModule({
imports: [
HttpClientModule,
StoreModule.forRoot(reducers, { metaReducers }),
TranslateModule.forRoot({
loader: {
provide: TranslateLoader,
useFactory: (createTranslateLoader),
deps: [HttpClient]
}
}),
]
}

仍然在 user.servive.spec.ts 中它说没有商店的提供者。

user.service.spec.ts

describe('UserService', () => {
beforeEach(() => {
TestBed.configureTestingModule({
providers: [UserService]
});
});

it('should be created', inject([UserService], (service: UserService) => {
expect(service).toBeTruthy();
}));
});

user.service.spec 中的 Test.configureTestingModule 是否“覆盖”了 test.ts 中的那个?

如果是这样,我如何在全局级别配置 TestBed 以避免导入重复模块?

谢谢!

最佳答案

简短的回答是 TestBed 挂接到 Jasmine 的 beforeEachafterEach 回调中,在每次测试之间重置测试模块。这为每个单元测试提供了一个全新的平台。

这意味着您不能在 test.ts 文件中使用 TestBed.configureTestingModule。您必须手动为每个规范执行此操作或编写您自己的默认测试设置实用程序来处理它。

我是 shallow-render 的开发者通过使用 Shallow.alwaysProvide() 在您的测试环境中全局设置/覆盖/模拟提供者和 forRooted 提供者,它确实有一个解决方案。其余的测试模块设置由库处理。

https://github.com/getsaf/shallow-render#global-providers-with-alwaysprovide

希望这对您有所帮助。

关于 Angular 5 测试 - 全局配置测试平台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47204406/

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