我有几个.spec.ts文件,在每个之前都需要以下内容:
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [FormsModule, HttpModule, CovalentHttpModule.forRoot({
interceptors: [{
interceptor: CustomInterceptorService, paths: ['**'],
}],
}),],
declarations: [LoginComponent],
providers: [AuthService, { provide: Router, useClass: class { navigate = jasmine.createSpy('navigate'); } }, LoggingService, CustomInterceptorService],
})
.compileComponents();
}));
有没有办法外包这个TestBed配置?现在我必须使用相同的导入和提供程序调整每个新的测试文件。
我正在寻找类似基本单元测试的东西。茉莉花可以吗?
答案 0 :(得分:1)
此案例并非真正针对Jasmine。如果应该重用一个函数,可以通过JavaScript / TypeScript来完成。
辅助功能:
export const setupFooTestbed = async(() => {
TestBed.configureTestingModule({...})...
});
...
beforeEach(setupFooTestbed);
或者它可以是TestBed.configureTestingModule
接受的TestModuleMetadata
对象的基类:
export FooTestModuleMetadata implements TestModuleMetadata { ... }
...
beforeEach(async(() => {
TestBed.configureTestingModule(new FooTestModuleMetadata)...
}));
或者可以向initTestEnvironment
method提供通用测试模块:
使用编译器工厂,PlatformRef和角度模块初始化测试环境。这些对于套件中的每个测试都是通用的。
这可能只调用一次,以便为当前平台上的当前测试套件设置公共提供程序。如果您绝对需要更改提供程序,请先使用resetTestEnvironment。