如何允许服务在Angular 5测试中进行真正的http调用

时间:2018-06-12 16:29:30

标签: angular typescript karma-jasmine

在我的Angular 5应用程序中,我进行了一些冒烟测试或健全性检查,我希望一些服务能够进行真正的http调用,以确保下游依赖端点仍然有效/可访问。 我已经尝试在TestBed中导入真正的HttpModule以及注入真正的实现,但看起来似乎http调用没有通过。我也一直在挖掘文档,但我找不到任何结论性的想法。 有没有人知道如何让它发挥作用?

我目前的测试规范如下:

describe('My Smoke Test', () => {
    beforeEach(async (done) => {
    TestBed.configureTestingModule({
        providers: [
            { provide: Router, useValue: router },
            HttpRequestService,
            AppConfigService,
            ServerRoutingService,
            ProductService,
            {
                provide: APP_INITIALIZER,
                useFactory: appInitializerFn,
                multi: true,
                deps: [AppConfigService]
            }
        ],
        imports: [
            HttpModule
        ]
    })
    ...
   })

   it('Checking products endpoint', () => { 
      let productService = TestBed(ProductService)
      productService.getFirst().subscribe(
          response => expect(response.statusCode).toEqual(200),
      )
   })
})

我也尝试了async,fakeAsync,因为productService.getFirst()方法返回一个Observable,所以也许这个承诺没有被执行?

0 个答案:

没有答案