1 回答

TA貢獻(xiàn)1785條經(jīng)驗(yàn) 獲得超4個(gè)贊
正如@jonrsharpe 所建議的那樣,根據(jù) JavaScript 的“單線程、事件循環(huán)”性質(zhì),您sinon.assert.calledOnce(stub);將在解決(即調(diào)用)fn2內(nèi)部承諾之前被調(diào)用。這里有一篇文章供參考:https ://dev.to/lydiahallie/javascript-visualized-promises-async-await-5gke 。Page.fn1.then(() => { fn3(); })
您可以嘗試將代碼更改為:
...
return Page.fn1().then(() => {
sinon.assert.calledOnce(stub);
});
...
要么
it("test async", async () => {
// stub this async to isolate the SUT
sinon.stub(Page, "fn2").resolves();
const stub = sinon.stub(Page, "fn3");
await Page.fn1();
sinon.assert.calledOnce(stub);
});
所以在解決sinon.assert.calledOnce(stub);后會(huì)被調(diào)用Page.fn1()。
添加回答
舉報(bào)