【问题标题】:jest+supertest e2e testing of API endpoints that issue HTTP requests to other endpointsjest+supertest 对向其他端点发出 HTTP 请求的 API 端点进行 e2e 测试
【发布时间】:2020-06-04 11:09:15
【问题描述】:

我正在使用 jest 和 supertest 对我的 API 端点进行 e2e 测试。 api 端点是用打字稿快速实现的。我正在处理的问题是我的应用程序设置为微服务,其中我的一些端点向其他端点发出 HTTP 请求。出于这些测试的目的,所有这些微服务都安装在同一个应用中。

所以我正在使用

const res = await request(app)
      .get(endpoint)
      .set('Authorization', authorization);
    expect(res.status).toEqual(200);

获取我的端点。但这会返回 statusCode 500 和错误 Error: connect ECONNREFUSED 127.0.0.1:8999。端点确实向同一主机上的另一个端点发出 HTTP 请求。我猜 supertest 实际上并没有启动整个应用程序,因此其他 api 端点不可用?有没有办法解决这个问题?我不想模拟另一个端点,因为这应该是一个端到端的测试。单元测试也可用,但现在我正在编写 e2e 快照测试。

【问题讨论】:

    标签: typescript jestjs microservices e2e-testing supertest


    【解决方案1】:

    问题出在配置中定义的端口号,但 Supertest 使用随机端口号来运行应用程序。但是你也可以将一个正在运行(监听)的应用程序传递给 supertest 的request,这样你就可以使用request(app.listen(portnum)).get(endpoint)

    【讨论】:

      猜你喜欢
      • 2017-05-05
      • 1970-01-01
      • 2018-12-10
      • 1970-01-01
      • 2020-07-11
      • 2021-06-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多