Come posso verificare questo in modo asincrono?Come testare uno stub che restituisce una promessa in un test asincrono?
it('Should test something.', function (done) {
var req = someRequest,
mock = sinon.mock(response),
stub = sinon.stub(someObject, 'method');
// returns a promise
stub.withArgs('foo').returns(Q.resolve(5));
mock.expects('bar').once().withArgs(200);
request(req, response);
mock.verify();
});
Ed ecco il metodo da testare.
var request = function (req, response) {
...
someObject.method(someParameter)
.then(function() {
res.send(200);
})
.fail(function() {
res.send(500);
});
};
Come potete vedere sto usando node.js, Q (per la promessa), Sinon per beffardo e lo sradicamento e moka come l'ambiente di test. Il test precedente non riesce a causa del comportamento asincrono dal metodo di richiesta e non so quando chiamare done() nel test.
modo più semplice che ho trovato a lavorare con le chiamate asincrone, quando si desidera utilizzare la risposta, è stato quello di rompere la funzione 2 in corrispondenza del punto in cui è necessaria e chiamata la risposta la seconda parte quando viene ricevuta la risposta. –
è necessario scegliere una risposta, non solo upvote. – oligofren