[英]Expect to have been called failing even after being called
我在 Jest 中有一個測試用例代碼。
let ticketsTransformer = new TicketTransformer();
ticketsTransformer.transform = jest.fn(() => results);
expect(ticketsTransformer.transform).toHaveBeenCalled();
const synchronizer = new Synchronizer(
client,
ticketsTransformer,
jest.mock(),
persister,
jest.mock()
);
synchronizer.sync("1999-01-01");
expect(ticketsTransformer.transform).toHaveBeenCalled();
在sync
方法中,我嘗試使用console.log(this.ticketTransformer.transform())
,它給了我存儲在results
變量中的相同結果,這意味着該方法正在按預期調用。 但我不確定為什么我的測試用例仍然失敗並抱怨
Expected number of calls: >= 1
Received number of calls: 0
72 | );
73 | synchronizer.sync("1999-01-01");
> 74 | expect(ticketsTransformer.transform).toHaveBeenCalled();
| ^
75 | });
76 |
所以問題是因為它沒有等待 function 在它自己之前執行它試圖做期望。
因此,為了等待,您可以使用 async 和 await,還可以檢查 promise 調用,您可以使用斷言
來自官方文檔的示例片段
it('works with async/await', async () => {
expect.assertions(1);
const data = await user.getUserName(4);
expect(data).toEqual('Mark');
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.