每个块之前的Angular2单元测试太慢

danday74

这是我进行单元测试的每个步骤之前的内容。它的效果很好,可以为每个测试提供一个新的组件实例。但是,执行beforeEach块大约需要4秒钟。当您进行200次测试时,那就太慢了!

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

我如何能 ...

  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;
      });
}));
danday74

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

确定要包括的组件/模块成为我的下一个问题,在这里解决了..

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章