我正在使用Mocha和Supertest测试Node.js服务器。测试套件已经增长到1500个以上的测试。突然间,虽然所有要测试的代码仍然正常工作,但我的测试套件出现了以下错误:
{[Error:read ECONNRESET]code:'ECONNRESET',errno:'ECONNRESET',syscall:'read'}
如果我注释掉一些较早运行的测试,那么导致出错的测试会发生变化。 是什么原因导致这种情况?
我正在使用Mocha和Supertest测试Node.js服务器。测试套件已经增长到1500个以上的测试。突然间,虽然所有要测试的代码仍然正常工作,但我的测试套件出现了以下错误:
{[Error:read ECONNRESET]code:'ECONNRESET',errno:'ECONNRESET',syscall:'read'}
如果我注释掉一些较早运行的测试,那么导致出错的测试会发生变化。 是什么原因导致这种情况?
我在Mike Gradek的这篇Google Groups帖子中找到了答案:
我们使用mocha和supertest发出这些请求,意识到我们实际上是在每个请求上启动新的端口绑定,而不是重用现有的绑定。
所以像这样编写的代码:
var request = require('supertest');
var app = require('../app');
request(app).get(...);
request(app).get(...);
成为
var request = require('supertest');
var app = require('../app');
var supertest = request(app);
supertest.get(...);
supertest.get(...);
那对我们解决了问题。
对我也是一样。
await
运行三个supertest请求,我们成功解决了问题,而不是使用Promise.all
。 - Jesse Carter