12

我正在使用 Mocha 和 Supertest 测试 Nodejs 服务器。测试套件已发展到超过 1500 个测试。突然,尽管所有被测代码仍然有效,但我的测试套件失败并出现以下错误:

{ [Error: read ECONNRESET] code: 'ECONNRESET', errno: 'ECONNRESET', syscall: 'read' }

如果我注释掉之前运行的一些测试,导致错误的测试会发生变化。是什么导致了这种精神错乱?

4

1 回答 1

8

我在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(...);

这为我们解决了问题。

对我来说也是如此。

于 2014-02-22T01:13:43.317 回答