根据https://jestjs.io/docs/en/asynchronous,承诺返回的时间并没有太大的延迟,而是您需要从测试中返回 Promise 并且 Jest 将等待该 Promise返回(不管有多长)。
test('the data is peanut butter', () => {
return fetchData().then(data => {
expect(data).toBe('peanut butter');
});
});
在您的情况下,根据 jest.io,(https://jestjs.io/docs/en/mock-functions.html)您将使用以下方法返回值:
axios.get.mockResolvedValue(resp);
然后对此进行测试
return Users.all().then(resp => expect(resp.data).toEqual(users));
如果你想为你的 Promise 添加一个时间延迟,你可以使用 setTimeout 来控制返回
const getData = async () => {
return new Promise(resolve => {
setTimeout(resolve, 1000); //added arbitrary delay
});
};
然后,如果您使用 await 调用 getData 函数,您可以测试前后响应以查看微调器是否按预期显示和消失
expect(queryByTestId('spinner')).not.toBeNull(); //expect spinner on render
await getData();
expect(queryByTestId('spinner')).toBeNull(); //expect no spinner on data returned