在左侧显示了用于更改输入字段的测试用例。在await
关键字之后,没有console.log并且断言失败。有人可以帮我修复测试吗?
模拟函数的定义如下:
const handleChangeFn = jest.fn();
const onCityResolvedFn = jest.fn();
const oneCity = [{ zipCode: 8852, name: 'Altendorf'}];
mockedAxios.get.mockImplementation(() => Promise.resolve({ data: oneCity }));
beforeEach(() => {
handleChangeFn.mockReset();
onCityResolvedFn.mockReset();
});
答案 0 :(得分:1)
您不会在控制台中看到“之后”,因为onPostalCodeChange是异步功能,并且您使用了同步测试。
首先,您应该使测试异步。在测试功能之前添加“异步”:
it('should ....', async () => {...})
然后,在测试一个函数被调用多少次之前,添加一点暂停。您可以使用如下结构:
await new Promise(resolve => setTimeout(resolve, 100))
这种构造意味着“睡眠100毫秒”
我想,您将在控制台中看到“之后”。
如果问题仍然存在,请在此处写下您要测试的所有代码
PS 在React钩子中编写异步函数不是一个好习惯