我在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 |
答案 0 :(得分:1)
所以问题在于,因为它没有在等待函数执行之前就试图实现期望。
因此,为了等待,您可以使用async和await,也可以使用断言来检查promise调用
来自官方docs的示例代码段
it('works with async/await', async () => {
expect.assertions(1);
const data = await user.getUserName(4);
expect(data).toEqual('Mark');
});