我正在尝试编写一个测试来检查屏幕是否显示带有错误消息的 Toast。测试通过,但有警告:
console.error
Warning: You called act(async () => ...) without await.
This could lead to unexpected testing behaviour, interleaving multiple act calls
and mixing their scopes. You should - await act(async () => ...);
屏幕工作正常,我只是在学习如何编写测试。这是我的测试:
it('shows error correctly', async () => {
mockAxios.get.mockRejectedValueOnce(new Error('Async error'))
const { queryByText } = renderWithRedux(<DiscoverScreen />)
await waitFor(() => {
expect(queryByText(ErrorMessages.GeneralErrorToast)).not.toBeNull()
})
await waitForElementToBeRemoved(() => queryByText(ErrorMessages.GeneralErrorToast), { timeout: 5000 })
})
我做错了什么?反应原生测试肯定存在问题,因为某些异步查询存在问题,尤其是当您有多个异步查询时。我在这里发现:https ://github.com/callstack/react-native-testing-library/issues/379#issuecomment-720734366
我正在使用本机基础来显示 Toast,我认为它正在使用 Animated。我应该使用 jest.useFakeTimers() 以及如何使用?