0

我正在开发一个新项目,并将使用 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();
  });
});
4

1 回答 1

0

每个组件都需要路由,这听起来很奇怪。路由应该只注入到智能的第一、二级组件,其余的组件应该被转储。

无论如何,如果您真的需要它,您可以创建一个接受 TestModuleMetadata 对象的函数并像这样注入所需的导入

createTestModule(moduleDef: TestModuleMetadata) {
  let imports = [...(moduleDef.imports||[]), RouterTestingModule];
  return Object.assign({}, moduleDef, {imports});
}
于 2017-04-20T23:36:24.550 回答