Javascript 为什么jest没有正确运行我的测试?

Javascript 为什么jest没有正确运行我的测试?,javascript,reactjs,react-hooks,Javascript,Reactjs,React Hooks,我正在尝试使用jest测试我的代码,到目前为止,我有以下几点: const [error, setError] = useState(null) async function fetchThis() { try { if (something) { myFunction() // i am mocking this } else { somethingEls

我正在尝试使用jest测试我的代码,到目前为止,我有以下几点:

    const [error, setError] = useState(null)
    async function fetchThis() {
        try {
            if (something) {
                myFunction() // i am mocking this
            } else {
              somethingElse()
            }

        } catch (err) {
            setError(true)
        }
    }

useEffect(() => {
    fetchThis()
}, [])
我在模仿
myFunction
就像这样:

        myFunction.mockImplementationOnce(() => {
            throw new Error()
        })
因此,它成功地进入了捕捉区

但是由于某些原因,它从未将
setError()
函数设置为true

开玩笑的测试:

        const { queryByText, getByText, getByTestId, rerender, debug, container } = render(
            <App {...props} />,
        )

rerender(<App {...props} />) 

见鬼…

您可能需要使用
act()
来更新react状态。
useEffect(() => {
    setError(true)
}, [])