【发布时间】:2019-03-24 21:39:20
【问题描述】:
我目前在一个 Angular 6 项目中工作,我已经使用 Fort-awesome 模块导入了几个新的 font-awesome 5 图标。
正如预期的那样,由于无法在我的页面中呈现 fa-icon 选择器,现在我的一些单元测试(Karma + Jasmine)将无法通过。
我知道我可以在 TestBed 中为每个组件使用 CUSTOM_ELEMENTS_SCHEMA,但我不知道这样做是否会产生其他副作用,使我的单元测试不太可靠(即其他子组件可能会停止测试)。
另一种选择是在每个所需的单元测试中简单地导入模块,并在每个单元测试中添加带有所需图标的 library.add()。但是,我确实认为这最终可能会很乏味,因为根据应用程序的类型可能会有 20 到 50 个图标。
我也想过,但还没有尝试过为图标添加一个存根模块,所以我只是“忽略”它们。我认为这可能是合理的,但不确定在这种情况下最佳做法是什么。
下面是我在 App.Module 中导入的摘录
import { FontAwesomeModule } from '@fortawesome/angular-fontawesome';
import { library } from '@fortawesome/fontawesome-svg-core';
import { faLock, faHourglassHalf, faLockOpen } from '@fortawesome/free-solid-svg-icons';
在构造函数中
export class AppModule {
constructor() {
library.add(
faHourglassHalf, // Task in progress
faLockOpen, // Archive task
faLock
);
}
}
完整的回购:https://github.com/Narshe1412/Code-Institute-Interactive-Frontend-Project/tree/taskman
据我所知,这不是辩论论坛,我只想问:
- 在这个用例中使用 CUSTOM_ELEMENTS_SCHEMA 有什么副作用,如果使用它时存在可靠性问题,那么其他两个选项中的哪一个更可取?
【问题讨论】:
-
鉴于您正在使用库,并且使用未添加到库中(或意外删除)的图标可能会使您的组件失败,我绝对不会使用 CUSTOM_ELEMENTS_SCHEMA。我只需在测试和 AppModule 中导入一个导入 FontAwesomeModule 的模块并将图标添加到库中。
-
还要确保检查library documentation。
标签: angular unit-testing karma-jasmine