GRZ*_*RZa 3 jestjs react-native react-hooks testing-library react-query
我正在使用jest
并@testing-library/react-hooks
测试react-query
在我的 React Native 代码中实现的钩子。
测试工作正常,但最后我得到:
Jest did not exit one second after the test run has completed.
This usually means that there are asynchronous operations that weren't stopped in your tests. Consider running Jest with `--detectOpenHandles` to troubleshoot this issue.
Run Code Online (Sandbox Code Playgroud)
这是我的简化代码:
import { renderHook } from '@testing-library/react-hooks'
import React from 'react'
import { QueryClient, QueryClientProvider, useQuery } from 'react-query'
const useSomething = () => {
return useQuery('myquery', () => 'OK')
}
beforeAll((done) => {
done()
})
afterAll((done) => {
done()
})
// test cases
describe('Testing something', () => {
it('should do something', async () => {
const queryClient = new QueryClient()
const wrapper = ({ children }: { children: React.ReactFragment }) => (
<QueryClientProvider client={queryClient}>{children}</QueryClientProvider>
)
const { result, waitFor } = renderHook(() => useSomething(), { wrapper })
await waitFor(() => {
return result.current.isSuccess
})
expect(result.current.data).toBe('OK')
})
Run Code Online (Sandbox Code Playgroud)
})
我尝试在每个/全部之前使用cleanup
、done
、unmount
等,但没有结果。如果我useQuery
从 中删除useSomething
,问题就会消失。
知道如何修复它吗?
这个问题过去曾在这里报告过: https://github.com/tannerlinsley/react-query/issues/1847
该问题是由 React-query 垃圾收集计时器运行引起的,默认为 5 分钟。正如问题中所述,解决方案是:
afterEach(() => { queryClient.clear() });
cacheTime
为0
您的测试,例如:queryClient.setDefaultOptions({ queries: { cacheTime: 0 } })
jest.useFakeTimers()
归档时间: |
|
查看次数: |
3718 次 |
最近记录: |