为什么开玩笑不能正确运行我的测试?

时间:2019-09-30 13:03:33

标签: javascript reactjs react-hooks

我正在尝试使用玩笑来测试我的代码,到目前为止,我已经做到了:

    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()
        })

因此它成功进入了catch块

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

开玩笑地测试:

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

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

//很明显,我需要重新渲染,一些文档告诉我react不会在同步模式下运行钩子

有什么想法为什么不会这样?

还要清楚一点,它在浏览器中设置为true,因此在测试中肯定是必需的。

当我这样做时,这甚至都不起作用

useEffect(() => {
    setError(true)
}, [])

到底是什么...

0 个答案:

没有答案