Comment tester un talon de retour d'une promesse dans un async test?

Comment puis-je tester cela dans une manière asynchrone?

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

});

Et voici la méthode à tester.

var request = function (req, response) {

    ...

    someObject.method(someParameter)
        .then(function () {
            res.send(200);
        })
        .fail(function () {
            res.send(500);
        });

};

Comme vous pouvez le voir, je suis en utilisant node.js Q (la promesse), sinon pour les objets fantaisie et de moka que l'environnement de test. Le test ci-dessus échoue à cause de la async comportement de la demande de la méthode et je ne sais pas quand faire appel done() dans le test.

Façon la plus simple que j'ai trouvé dans le travail avec les appels asynchrones, lorsque vous souhaitez utiliser la réponse, était de sortir de la fonction en 2, au point où la réponse est nécessaire et l'appel de la deuxième partie lors de la réception de la réponse.
vous devez choisir une réponse, et pas seulement upvote.

OriginalL'auteur Stefan | 2013-04-15