测试反应:"Do not await the result of calling act(...) with sync logic"
Testing React: "Do not await the result of calling act(...) with sync logic"
使用react和react-dom 16.9.0
我在测试我的反应挂钩时收到此警告:
console.error node_modules/react-dom/cjs/react-dom-test-utils.development.js:80
Warning: Do not await the result of calling act(...) with sync logic, it is not a Promise.
我的测试代码(使用带@testing-library/react的玩笑)
...
await act( () => {
rerender(
<HookTester
promise={asyncFunction}
initialValue={'extra loading...'}
/>
);
});
expect(asyncFunction).toHaveBeenCalledTimes(2);
...
但如果我不等待,那么我的expect
就太早了。
哦!我知道了!
原来 docs 提到的同步函数是这样的:
act( () => {
// ... some 'sync logic'
});
你等不及了。
但是你当然可以等待一个异步函数:
await act( async () => {
// ... some 'async logic'
});
这解决了我的问题。
使用react和react-dom 16.9.0
我在测试我的反应挂钩时收到此警告:
console.error node_modules/react-dom/cjs/react-dom-test-utils.development.js:80
Warning: Do not await the result of calling act(...) with sync logic, it is not a Promise.
我的测试代码(使用带@testing-library/react的玩笑)
...
await act( () => {
rerender(
<HookTester
promise={asyncFunction}
initialValue={'extra loading...'}
/>
);
});
expect(asyncFunction).toHaveBeenCalledTimes(2);
...
但如果我不等待,那么我的expect
就太早了。
哦!我知道了!
原来 docs 提到的同步函数是这样的:
act( () => {
// ... some 'sync logic'
});
你等不及了。
但是你当然可以等待一个异步函数:
await act( async () => {
// ... some 'async logic'
});
这解决了我的问题。