是否可以将基本类用于angular的单元测试? 因为我的很多导入和声明总是相同的。如果我添加或替换一个类,则总是必须在每个测试类中更改导入和声明。
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [DialogModule, DynamicDialogModule, FormsModule, TableModule, HttpClientTestingModule, ContextMenuModule],
declarations: [MyDialog ,OtherDialog],
providers: [MyService],
})
.compileComponents();
}));
上面的代码由每个测试类中的大部分代码组成,因此这是应该在基类中的代码。
答案 0 :(得分:1)
是的,有可能。您可以放
export const configureTestBed = () => TestBed.configureTestingModule({
imports: [DialogModule, DynamicDialogModule, FormsModule, TableModule, HttpClientTestingModule, ContextMenuModule],
declarations: [MyDialog ,OtherDialog],
providers: [MyService],
}).compileComponents();
在导出的函数中,在每个beforeEach
(或类似的名称)中调用它。
但是,我不建议这样做。无论何时进行单元测试,都应仅import, declare, provide
进行单元测试所需的内容。
如果您import, declare, provide
不需要component, service, directive
的很多东西,那么您会为自己制造麻烦,并且这会使测试运行缓慢。我是根据经验讲的。
这是您阅读What does “DAMP not DRY” mean when talking about unit tests?的很好的交流。另外,不要掉以轻心,如果在测试之间有一些重复的代码也可以。这将为您提供更大的灵活性和控制力。
答案 1 :(得分:0)
您可以将它们全部塞入TestingModule
@NgModule({
imports: [
DialogModule,
DynamicDialogModule,
FormsModule,
TableModule,
HttpClientTestingModule,
ContextMenuModule
],
declarations: [
MyDialog,
OtherDialog
],
providers: [MyService]
})
export class TestingModule { }
然后在所有测试中,您只需导入此模块即可:
beforeEach(async(() => {
TestBed.configureTestingModule({ imports: [TestingModule] });
}))