我正在使用 Mocha 和 Supertest 测试 Nodejs 服务器。测试套件已发展到超过 1500 个测试。突然,尽管所有被测代码仍然有效,但我的测试套件失败并出现以下错误:
{ [Error: read ECONNRESET] code: 'ECONNRESET', errno: 'ECONNRESET', syscall: 'read' }
如果我注释掉之前运行的一些测试,导致错误的测试会发生变化。是什么导致了这种精神错乱?
我正在使用 Mocha 和 Supertest 测试 Nodejs 服务器。测试套件已发展到超过 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(...);
这为我们解决了问题。
对我来说也是如此。