Reactjs 使用效果的酶/Jest试验()

Reactjs 使用效果的酶/Jest试验(),reactjs,unit-testing,jestjs,enzyme,Reactjs,Unit Testing,Jestjs,Enzyme,我有一个组件,看起来像: constPersonalGreeting=():ReactElement=>{ const[date,setDate]=useState(新日期()) useffect(()=>{ 常量计时器=设置间隔(()=>{ 设置日期(新日期()) }, 60000) return()=>{ 清除间隔(计时器) } }, []) 返回( {date}> ) } 我遇到了一个错误,该错误声明未满足函数(89%)的“全局”覆盖阈值:88.73%,当我查看日志时,它特别指出未测试u

我有一个组件,看起来像:

constPersonalGreeting=():ReactElement=>{
const[date,setDate]=useState(新日期())
useffect(()=>{
常量计时器=设置间隔(()=>{
设置日期(新日期())
}, 60000)
return()=>{
清除间隔(计时器)
}
}, [])
返回(
{date}>
)
}
我遇到了一个错误,该错误声明未满足函数(89%)的“全局”覆盖阈值:88.73%,当我查看日志时,它特别指出未测试
useffect()
中的
return()
clearInterval(timer)
。以下是一个屏幕截图:

老实说,我正在绞尽脑汁想弄清楚他们想让我测试什么。以下是我测试的内容:

description('PersonalGreeting',()=>{
const setTimeOfDay=jest.fn()
//eslint禁用下一行
const useTogleMock:any=(initialState:string)=>[
初始状态,
设置日期时间
]
在每个之前(()=>{
jest.spyOn(React,'useState').mock实现(useToggleMock)
})
之后(()=>{
开玩笑
})
它('按预期呈现组件',()=>{
常量包装器=装入(
)
expect(wrapper.text().length>0).toBe(true)
})
它('每分钟检查时间',()=>{
开玩笑
坐骑(
)
expect(setTimeOfDay).not.toBeCalled()
//1分钟
开玩笑提前计时(60000)
期望(setTimeOfDay)。已被调用的时间(1)
})
})

您需要卸载组件,这将触发
useffect()中的返回函数。

像这样的


它('应该卸载组件',()=>{
常量包装器=装入(
)
wrapper.unmount();
//在这里继续你的期待
})
尝试卸载()。仅当卸载组件时,才会调用useEffect中的cleanup函数。