【发布时间】:2021-01-06 15:04:40
【问题描述】:
我是 Jest 和 Enzyme 的新手,正在努力编写一个单元测试来检查当某个状态值存在时我的组件是否正确呈现。
下面是我的代码:
//Auth.js
export const Auth = ({ children }) => {
const [authStatus, setAuthStatus] = useState('waiting')
useEffect(()=>{
const status = await getAuth()
if (status) {
setAuthStatus('Authed')
}
else{
setAuthStatus('Unauthed')
}
},[])
return (
<>
{authStatus === 'waiting' && <p>Loading...</p>}
{authStatus === 'Authed' && <>{Children}</>
</>
)
}
在上面的代码中,我想测试 authStatus 为默认值时的 Loading 状态,并且我想编写第二个测试来测试在 authStatus 被 Authed 时传递的子项是否被渲染。我找到了一种模拟实现状态更改的方法,但是该实现仅限于一个useEffect,因为将来可能会有多个useEffects,我不想采用这种方法。有没有更好的方法来测试这种行为?
【问题讨论】:
标签: reactjs jestjs enzyme react-test-renderer