Versuch, einen Node.js-Serverprozess mit Mocha zu testen

Ziemlich neu bei Node.js

Ich habe eine App erstellt, die einen Serverprozess ausführt und Dateien bereitstellt (verwendet weder Express noch Frameworks).

Ich versuche, dafür einen Mokka-Test zu verwenden ... Ich wollte meinen Serverprozess starten und dann Anforderungen ausführen, um die erwarteten Ergebnisse (Statistikcode, Textinhalt und dergleichen) zu testen.

Es funktioniert jedoch nicht ordnungsgemäß, alle Anforderungen können keine Verbindung zum Server herstellen. Ich bin mir ziemlich sicher, dass das Problem darin besteht, dass der Knoten gerade eine Prozessschleife ausführt und der Server nicht im Hintergrund ausgeführt wird, während die Abfragen ausgeführt werden oder läuft der Server möglicherweise noch nicht (ASYNC gestartet), während die Anfrage gestellt wird?

Wie auch immer, ich habe mich gefragt, wie ich das am besten testen kann. Ich gehe davon aus, dass entweder der Server im Hintergrund ausgeführt werden muss (wie ein verzweigter Prozess) und / oder ich einen Weg finden muss, auf den Serverprozess zu warten Sei zuerst "auf", aber nicht sicher, wie.

Oder zumindest Empfehlungen zum Testen eines solchen Serverprozesses (mit Mocha oder anderem).

Vielen Dank.

Hier ist ein Beispiel für einen Testcode (aktualisiert seit der ursprünglichen Frage)

var server = new Server302('./fixture/');

var instance;

describe('Tests', function() {

before(function(done) {
     instance = http.createServer(function(request, response) {
        console.log(request.url);
        server.serve(request, response);
    }).listen(8000);
    instance.on("listening", function() {
        console.log("started");
        done();
    });
});

after(function(done){
  instance.close();
  console.log("stopped");
  done();
});

it("Should fetch test.html", function(done) {
    console.log("test1");
    http.get("http://localhost:8000/", function(res) {
        res.on('data', function(body) {
            console.log(body)
            expect(body).toEqual("test");
            done();
        });
    })
});

Es scheint in der richtigen Reihenfolge ausgeführt zu werden, schlägt jedoch mit einem Verbindungsfehler fehl, während es beim manuellen Testen mit dem Browser funktioniert:

started
test1
․․․stopped


  ✖ 1 of 1 tests failed:

  1) Tests Should fetch test.html:
  Error: connect ECONNREFUSED
  at errnoException (net.js:670:11)
  at Object.afterConnect [as oncomplete] (net.js:661:19)

Antworten auf die Frage(3)

Ihre Antwort auf die Frage