我有一个简单的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语句可能会失败.