无法在JEST的IF语句中读取未定义对象的属性

Pratish Shrestha

我有一个简单的if-else语句为

if(this.props.params.id){
    //do something
}

现在,这在浏览器中可以正常工作。如果参数中有一个ID,则输入if子句,如果没有id,则不输入。

现在,当用笑话编写测试时,当未定义id时,它将引发错误:“无法读取未定义的属性'id'”为什么会发生,是否应该将其视为false?它在浏览器中工作正常,只是在测试中会引发错误。

米普

如果id本身未定义,则您的测试将按预期工作(尽管有更好的编写方法)

您遇到的问题是来自this.props.params的未定义。在这种情况下,您尝试访问的属性不存在。

为了解决这个问题,您需要检查是否同时定义了参数和ID。

您可以这样做:

if (typeof this.props.params !== 'undefined' && this.props.params.id !== 'undefined') {
    //do something
}

最好使用typeof来检查未定义的变量,因为如果变量的评估结果为false,则if语句可能会失败。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章