У меня есть один метод, который выглядит так:
doSomething(){
return somethingPromisy().then((blerp) => {
// do something with blerp
return blerp; // Modified, of course
});
};
Тогда у меня есть другой метод, который выглядит следующим образом:
doSomethingElse(){
stepOne();
var x = stepTwo();
var y = stepThree(x);
doSomething.then((data) => {
stepFour(data + y);
});
};
Я использую mocha + chai + sinon для тестирования этого кода, в частности, doSomethingElse
, и затем я хочу сделать некоторые утверждения - но как я могу гарантировать, что обещание будет выполнено к тому времени, когда я сделаю утверждения ? Я знаю, что один вариант будет изменить его на:
doSomethingElse(){
/* ... */
return doSomething.then(...);
};
Если я сделаю это, то довольно легко написать мой тест, потому что тогда:
return doSomethingElse().then(() => {
someFake.lastCall.args.should.deep.equal(expectedData);
});
В моем тесте все нормально. Но должен ли я возвращать обещание просто ради возвращения обещания? На самом деле не заботится о каком-либо виде возвращаемого значения из doSomethingElse
- меня волнует только то, что когда я проверяю, была вызвана функция в doSomething.then
, то есть обещание doSomething
было разрешено ко времени, когда я делаю свои утверждения.
Так, каков "лучший" способ пойти по этому поводу?