Angular2 单元测试 beforeEach 块太慢

dan*_*y74 5 unit-testing angular

这是我在单元测试的每个块之前。它工作得很好,为每个测试提供了一个新的组件实例。然而,执行 beforeEach 块大约需要 4 秒。当你进行 200 次测试时,速度就很慢了!

我想将大部分代码移至 beforeAll 块(如果您使用 Jasminedone()回调而不是使用异步,则该块有效),但我仍然无法为每个测试创建一个新实例。某些测试失败是因为唯一实例已被先前的测试篡改。

我如何 ...

  1. 创建一个新的组件实例,而无需为每个测试执行这个耗时的代码。

或者

  1. 将实例重置为其未被篡改的状态。
beforeEach(async(() => {
    TestBed.configureTestingModule({
      imports: [AppModule],
      providers: [{provide: APP_BASE_HREF, useValue: '/'},
        MockBackend,
        BaseRequestOptions,
        {
          provide: Http,
          useFactory: (pBackend: MockBackend, pOptions: BaseRequestOptions) => {
            return new Http(pBackend, pOptions);
          },
          deps: [MockBackend, BaseRequestOptions]
        }]
    }).compileComponents()
      .then(() => {
        fix = TestBed.createComponent(Route1DetailComponent);
        instance = fix.componentInstance;
        injector = fix.debugElement.injector;
      });
}));
Run Code Online (Sandbox Code Playgroud)

dan*_*y74 1

我决定采用@peeskillet 和@estus 在评论中建议的方法。谢谢你们俩。

确定要包含哪些组件/模块成为我的下一个问题,在此解决。

单元测试时如何知道要导入哪些组件?