首页 > 解决方案 > 用于单元测试的 Angular 基类

问题描述

是否可以在角度单元测试中使用基类?因为我的很多导入和声明总是相同的。如果我添加或替换一个类,我总是必须更改每个测试类中的导入和声明。

    beforeEach(async(() => {
    TestBed.configureTestingModule({
        imports: [DialogModule, DynamicDialogModule, FormsModule, TableModule, HttpClientTestingModule, ContextMenuModule],
        declarations: [MyDialog ,OtherDialog],
        providers: [MyService],
    })
        .compileComponents();
}));

上面的代码是每个测试类中大部分相同的代码,所以这是应该在基类中的代码。

标签: angulartypescriptunit-testingtesting

解决方案


嗯,是的,这是可能的。你可以把

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不需要的东西,您可能会给自己带来麻烦,并且会使测试运行速度变慢。我是从经验谈这个的。

这是一个很好的交流,您可以阅读在谈论单元测试时“DAMP not DRY”是什么意思?. 另外,不要掉以轻心,如果您从测试到测试有一些重复的代码也没关系。这将为您提供更大的灵活性和控制力。


推荐阅读