Tentando testar um processo do servidor Node.js usando o Mocha

Bastante novo no Node.js

Fiz um aplicativo que executa um processo de servidor e atende arquivos (não usa express ou frameworks), agora estou tentando unit testá-lo.

Eu estou tentando usar um teste mocha para isso ... Eu pretendia iniciar o meu processo de servidor e, em seguida, executar pedidos contra ele para testar os resultados esperados (código de estatísticas, conteúdo do corpo e os gostos)

No entanto, ele não está funcionando corretamente, todo o pedido não consegue se conectar ao servidor ... Tenho certeza que o problema é porque o nó é juts executando um loop de processo, o servidor não está executando "em segundo plano" enquanto as consultas são executadas ou possivelmente o servidor ainda não está em execução (iniciou o ASYNC) enquanto o pedido está sendo feito?

De qualquer forma eu estava me perguntando qual era a maneira correta de testar isso, eu suponho que ou eu preciso ter o servidor executado em segundo plano (como um processo bifurcado) e / ou talvez eu precise encontrar uma maneira de esperar que o processo do servidor ser "para cima" primeiro, mas não sabe como.

Ou, pelo menos, recomendações sobre como testar esse processo de servidor (com o Mocha ou outro).

Obrigado.

Aqui está um exemplo de código de teste (Atualizado desde a pergunta original)

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

Parece Executar em ordem, mas ainda falha com um erro de conexão, enquanto funciona ao testar manualmente com o navegador:

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