2014-02-22 5 views
5

Ich teste einen Nodejs Server mit Mocha und Supertest. Die Testsuite ist auf mehr als 1500 Tests angewachsen. Plötzlich obwohl alle der im Test befindlichen Code noch funktioniert, versagt meine Testsuite mit diesem Fehler:mocha superest ECONNRESET

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

Wenn ich einige Tests auf Kommentar, die zuvor ausgeführt, die Tests, die die Fehleränderung führen. Was verursacht diesen Wahnsinn?

Antwort

3

fand ich die Antwort in diesem Google Groups post von Mike Gradek:

We used mocha and supertest to issue these requests, and realized that we were actually spinning up new port bindings on every request instead of reusing existing bindings.

So code that was written like so:

var request = require('supertest'); 
var app = require('../app'); 
request(app).get(...); 
request(app).get(...); 

Became

var request = require('supertest'); 
var app = require('../app'); 
var supertest = request(app); 
supertest.get(...); 
supertest.get(...); 

That solved the issue for us.

Und auch für mich.

+0

Danke! Das hat wirklich funktioniert und mir eine Menge Ärger erspart! –

+0

Okay, aber * warum * hat es das Problem gelöst? Alle ephemeren Ports verbrauchen? Ich bekomme das gleiche Problem mit der zweiten Version, wenn ich genug Tests bekomme ... –