Javascript 如何测试try/catch内部使用效果?
所以我有这个Javascript 如何测试try/catch内部使用效果?,javascript,reactjs,jestjs,Javascript,Reactjs,Jestjs,所以我有这个 useEffect(() => { try { if (prop1 && prop2) { callThisFunction() } else { callThatFunction() } } catch (error) { console.log(error,
useEffect(() => {
try {
if (prop1 && prop2) {
callThisFunction()
} else {
callThatFunction()
}
} catch (error) {
console.log(error, 'the err:')
setError(true)
}
}, [])
我想进入catch块来断言一些东西,我该怎么做
目前,我已经尝试模拟一个调用this/That
函数的实现,并抛出一个错误以使其进入catch,但没有成功
更新:还尝试了以下操作:
callThisFunction.mockImplementation(() => {
throw Error(error)
})
我已经说得很清楚了,它跳到了另一个球上,但由于某种原因,当另一个球失败时,它不会跳到接球上。但代码是有效的。我也不能参加考试:/
有什么想法吗?您可以使用异步函数:
useEffect(() => {
(async function() {
try {
if (prop1 && prop2) {
callThisFunction()
} else {
callThatFunction()
}
} catch (error) {
console.log(error, 'the err:')
setError(true)
}
})();
}, [])
你可以这样做:
export default function Example() {
const [error, setError] = useState(false)
async function asyncFetchAPI() {
let response = null;
try {
response = await fetch('api/...')
setError(false)
const { prop1, prop2 } = response.data;
if (prop1 && prop2) {
callThisFunction()
} else {
callThatFunction()
}
} catch (error) {
console.error('The err: ', error)
setError(true)
}
}
useEffect(() => {
asyncFetchAPI();
}, []);
return <div></div>
}
导出默认函数示例(){
const[error,setError]=useState(false)
异步函数asyncFetchAPI(){
让响应=null;
试一试{
响应=等待获取('api/…'))
设置错误(错误)
const{prop1,prop2}=response.data;
如果(项目1和项目2){
callThisFunction()
}否则{
调用该函数()
}
}捕获(错误){
console.error('错误:',error)
设置错误(真)
}
}
useffect(()=>{
asyncFetchAPI();
}, []);
返回
}
@skyboyer补充道,这就是你的意思吗?@skyboyer甚至看起来都不像useffect被调用:/@skyboyer不确定你是否理解。我正试图跳进接球区。所以道具不会有什么不同,它们只会跳进其他块中…你如何测试?碰巧是酶的浅()?它们(具体地说,React的Shallowrender
)仍然不支持运行useEffect
。刚刚尝试了使用useffect
和enzyme/mount()。同时添加测试代码。是的,你是对的,我首先误解了你的问题,但现在,我相信,我明白了。仍然没有人打电话:/