angular - 用于单元测试的 Angular 基类
问题描述
是否可以在角度单元测试中使用基类?因为我的很多导入和声明总是相同的。如果我添加或替换一个类,我总是必须更改每个测试类中的导入和声明。
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [DialogModule, DynamicDialogModule, FormsModule, TableModule, HttpClientTestingModule, ContextMenuModule],
declarations: [MyDialog ,OtherDialog],
providers: [MyService],
})
.compileComponents();
}));
上面的代码是每个测试类中大部分相同的代码,所以这是应该在基类中的代码。
解决方案
嗯,是的,这是可能的。你可以把
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”是什么意思?. 另外,不要掉以轻心,如果您从测试到测试有一些重复的代码也没关系。这将为您提供更大的灵活性和控制力。
推荐阅读
- javascript - 如何将文件图像转换为字节 [] ReactJS?
- docker - 在 docker-compose.yml 配置中使用 Docker 秘密值
- android - React-native azure auth 在重定向回 Android 中的应用程序时显示 2 个应用程序(也使用 okta auth)
- axon - 我应该在 Axon 的同一个包中声明异常吗?
- ios - “DailyScrum”类型的值没有使用根类型“DailyScrum”的键路径的动态成员“历史”
- python - 如何有效地使用 aiohttp?
- xamarin.forms - 如何显示没有标题的 UWP 启动画面?
- python - 如何将输入指定为 python 代码
- laravel - Laravel 附加具有相关关系的属性将导致达到最大函数嵌套级别
- php - Phpunit 忽略扩展类中的方法