我正在开发一个新项目,并将使用CLI生成应用程序和所有文件,但是我遇到了一些似乎对我很不好的东西,我希望有更好的方法来做到这一点
我的应用程序有路由,所以在我的测试中我需要导入RouterTestingModule
来为路由器提供模拟。但是,由于我们创建的每个规范都需要这个,如果在创建新组件时默认包含它,那将非常好。我研究了对自定义蓝图的支持,但目前还没有任何支持,这是一个无赖,因为如果我可以将该模块添加到蓝图中,这将是非常简单的。
默认情况下,还有哪些其他选项可以将其包含在所有规范中,而不需要每个开发人员在创建新组件时都记得添加它?
describe('LoginComponent', () => {
let component: LoginComponent;
let fixture: ComponentFixture<LoginComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ LoginComponent ],
imports: [
RouterTestingModule, // I don't want to have to manually add this in every spec file.
SharedModule
]
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(LoginComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
答案 0 :(得分:0)
每个组件都需要路由,这听起来很奇怪。路由应仅注入智能的第一级,第二级组件,其余组件应该转储。
无论如何,如果你真的需要它,你可以创建一个接受TestModuleMetadata对象并在所需的导入内部注入的函数
createTestModule(moduleDef: TestModuleMetadata) {
let imports = [...(moduleDef.imports||[]), RouterTestingModule];
return Object.assign({}, moduleDef, {imports});
}