我正在通过玩笑和超级测试来测试我的API端点。 api端点是使用typescript快速实现的。我要解决的问题是我的应用程序设置为微服务,其中某些端点向其他端点发出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快照测试。
问题是端口号,该端口号在config中定义,但Supertest使用随机端口号在其上运行该应用程序。但您也可以将正在运行的(监听)应用程序传递给超级测试的request
,因此您可以只使用request(app.listen(portnum)).get(endpoint)
。