Próba przetestowania procesu serwera Node.js przy użyciu Mocha

Dość nowy w Node.js

Stworzyłem aplikację, która uruchamia proces serwera i obsługuje pliki (nie używa ekspresowych ani żadnych frameworków), teraz próbuję przetestować go jednostkowo.

Próbuję użyć do tego testu mokki ... Zamierzałem uruchomić proces serwera, a następnie uruchomić żądania skierowane przeciwko niemu, aby przetestować oczekiwane wyniki (kod statystyk, treść treści i polubienia)

Jednak nie działa poprawnie, wszystkie żądania nie łączą się z serwerem ... Jestem całkiem pewien, że problem polega na tym, że węzeł uruchamia jedną pętlę procesową, serwer nie działa „w tle” podczas wykonywania zapytań lub ewentualnie serwer jeszcze nie działa (uruchomiono ASYNC) podczas wykonywania żądania?

W każdym razie zastanawiałem się, jaki jest właściwy sposób na przetestowanie tego, zakładam, że albo muszę mieć serwer działający w tle (jak rozwidlony proces) i / lub może muszę znaleźć sposób, aby czekać na proces serwera do bądź „w górę”, ale nie wiesz jak.

Lub przynajmniej zalecenia dotyczące testowania takiego procesu serwera (z Mocha lub innym).

Dzięki.

Oto przykładowy kod testowy (zaktualizowany od pierwotnego pytania)

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();
        });
    })
});

Wydaje się, że wykonuje się w porządku, ale nadal nie działa z błędem połączenia, podczas gdy działa podczas testowania ręcznego za pomocą przeglądarki:

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)

questionAnswers(3)

yourAnswerToTheQuestion