使用角度茉莉花测试获取请求返回未定义

问题描述

我有一个简单的方法来构造一个随机网址,例如(https://wqwqw.com/121212 ) 121212是随机生成的。

hits

在我的考试中,我有

getCall(url) {
   this.http.get(url)
}

我期望通话,但是由于url是随机的,所以我不知道它是什么,但是无论我说什么,它都说“期望1没有”。 const response = [{data:'string'}]

我不知道我在做什么错。

解决方法

您的期望检查将在执行service.getCall之后立即执行,因此在可以定义res之前。您将需要确保测试检查在回调中运行(然后确保Jasmine测试在退出之前一直等到该回调完成),或明确指定要等待调用完成。

由于您已经为测试指定了异步函数,因此我建议使用await,这似乎也是Jasmine docs中的首选方式。

  it('test get',async () => {
    const res = await service.getCall('a').toPromise()
   
    expect(res).toEqual(response)
 
    const request = httpMock.expectOne('a') // errorr
    request.flush(res)
  })