Jak mogę to sprawdzić w sposób asynchroniczny?Jak przetestować kodu pośredniczącego zwracającego obietnicę w teście asynchronicznym?
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();
});
I tu jest metoda do testowania.
var request = function (req, response) {
...
someObject.method(someParameter)
.then(function() {
res.send(200);
})
.fail(function() {
res.send(500);
});
};
Jak widać używam node.js, Q (obietnicy), sinon dla wyśmianie i stubbing i mokka jako środowisku testowym. Powyższy test kończy się niepowodzeniem z powodu zachowania asynchronicznego z metody żądania i nie wiem, kiedy wywołać done() w teście.
Najprostszym sposobem znalazłem się w pracy z połączeń asynchronicznych, jeśli chcą korzystać z odpowiedzi, było przełamanie funkcję w 2 w miejscu, gdzie jest potrzebny i wywołać odpowiedź druga część, w której otrzymano odpowiedź. –
musisz wybrać odpowiedź, a nie tylko przegrupować. – oligofren