我在 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 |
最佳答案
所以问题是因为它没有等待函数在其自身之前执行,所以它试图执行预期的操作。
因此,为了等待,您可以使用异步和等待,也可以使用断言来检查 promise 调用
来自官方的示例片段docs
it('works with async/await', async () => {
expect.assertions(1);
const data = await user.getUserName(4);
expect(data).toEqual('Mark');
});
关于javascript - 即使在被叫到之后也预计会被叫到失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58639941/