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

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

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

现在,这在浏览器中工作正常.
如果params中有id,则进入if子句,如果没有id,则不进入.

现在用jest编写测试时,如果没有定义id,它会抛出一个错误:
“无法读取未定义的属性’id’
为什么会发生这种情况,不应该将其视为虚假吗?
它在浏览器中工作正常,只是在测试中抛出错误.

最佳答案 如果id本身未定义,那么你的测试按预期工作(尽管有更好的编写方法)

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

要解决此问题,您需要检查是否定义了params AND id.

你可以这样做:

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

使用typeof来检查未定义的变量要好得多,因为如果变量的计算结果为false,则if语句可能会失败.

点赞