Andernfalls test zeigt die Fehlermeldung "Fehler: timeout 2000ms überschritten" bei der Verwendung von Sinon-Chai

Habe ich folgende route (express), für die ich Schreibe, ein integration test.

Hier der code:

var q = require("q"),
    request = require("request");

/*
    Example of service wrapper that makes HTTP request.
*/
function getProducts() {

    var deferred = q.defer();

    request.get({uri : "http://localhost/some-service" }, function (e, r, body) {
        deferred.resolve(JSON.parse(body));
    });

    return deferred.promise;
}

/*
    The route
*/
exports.getProducts = function (request, response) {
    getProducts()
        .then(function (data) {
            response.write(JSON.stringify(data));
            response.end();
        });
};

Ich will, um zu testen, ob alle Komponenten zusammen arbeiten, aber mit einem gefälschten HTTP-Antwort, ich bin so erstellen Sie einen stub für die Anfrage/http-Interaktionen.

Ich bin mit Chai, Sinon und Sinon-Chai und Mokka, wie der test-runner.

Hier ist der test-code:

var chai = require("chai"),
    should = chai.should(),
    sinon = require("sinon"),
    sinonChai = require("sinon-chai"),
    route = require("../routes"),
    request = require("request");

chai.use(sinonChai);

describe("product service", function () {
    before(function(done){
        sinon
        .stub(request, "get")
        //change the text of product name to cause test failure.
        .yields(null, null, JSON.stringify({ products: [{ name : "product name" }] }));
        done();
    });

    after(function(done){
        request.get.restore();
        done();
    });

    it("should call product route and return expected resonse", function (done) {

        var writeSpy = {},
            response = {
            write : function () { 
                writeSpy.should.have.been.calledWith("{\"products\":[{\"name\":\"product name\"}]}");
                done();
            }
        };

        writeSpy = sinon.spy(response, "write");

        route.getProducts(null, response);
    });
}); 

Wenn das argument geschrieben, die Antwort (response.schreiben) - entspricht der test geht ok. Das Problem ist, dass wenn der test fehlschlägt, wird der Fehler Meldung ist:

"Fehler: timeout 2000ms überschritten"

Habe ich verwiesen diese Antwort, jedoch ist es nicht das problem zu beheben.

Wie bekomme ich diesen code zum anzeigen der richtigen test-name und der Grund für den Ausfall?

NB Eine sekundäre Frage sein mag, könnte die Möglichkeit das response-Objekt wird geltend gemacht, die auf verbessert werden?

Schreibe einen Kommentar