Tratando de probar un proceso del servidor Node.js usando Mocha

Bastante nuevo en Node.js

Hice una aplicación que ejecuta un proceso de servidor y sirve archivos (no usa Express ni ningún framework), ahora estoy tratando de probarlo por unidad.

Estoy tratando de usar una prueba mocha para eso ... Tenía la intención de iniciar el proceso de mi servidor y luego ejecutar las solicitudes en su contra para probar los resultados esperados (código de estadísticas, contenido del cuerpo y similares)

Sin embargo, no funciona correctamente, todas las solicitudes no se pueden conectar al servidor ... Estoy bastante seguro de que el problema se debe a que el nodo está ejecutando un ciclo de proceso, el servidor no se está ejecutando "en segundo plano" mientras se ejecutan las consultas o posiblemente el servidor aún no se está ejecutando (se inició ASYNC) mientras se realiza la solicitud?

De todos modos, me preguntaba cuál era la forma correcta de probar esto, asumo que necesito que el servidor se ejecute en segundo plano (como un proceso bifurcado) y / o tal vez necesito encontrar una manera de esperar a que el proceso del servidor Sé "arriba" primero, pero no estoy seguro de cómo.

O, al menos, recomendaciones sobre cómo probar dicho proceso de servidor (con Mocha u otro).

Gracias.

Aquí hay un ejemplo de código de prueba (actualizado desde la pregunta 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 que se ejecuta en orden, pero aún falla con un error de conexión, mientras que funciona cuando se prueba manualmente con el 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)

Respuestas a la pregunta(3)

Su respuesta a la pregunta