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)