Javascript 无法在JEST中读取IF语句中未定义对象的属性
我有一个简单的if-else语句Javascript 无法在JEST中读取IF语句中未定义对象的属性,javascript,reactjs,jestjs,Javascript,Reactjs,Jestjs,我有一个简单的if-else语句 if(this.props.params.id){ //do something } 现在,这可以在浏览器中正常工作。 如果params中有一个id,它将进入If子句,如果没有id则不输入 现在,在使用jest编写测试时,如果未定义id,则会抛出一个错误: “无法读取未定义的属性“id” 为什么会发生这种情况,难道不应该把它当作假的吗? 它可以在浏览器中正常工作,只是在测试中会抛出错误。如果id本身未定义,那么您的测试将按预期工作(尽管有更好的编写方法
if(this.props.params.id){
//do something
}
现在,这可以在浏览器中正常工作。
如果params中有一个id,它将进入If子句,如果没有id则不输入
现在,在使用jest编写测试时,如果未定义id,则会抛出一个错误:
“无法读取未定义的属性“id”
为什么会发生这种情况,难道不应该把它当作假的吗?
它可以在浏览器中正常工作,只是在测试中会抛出错误。如果id本身未定义,那么您的测试将按预期工作(尽管有更好的编写方法) 您遇到的问题是未定义this.props.params。在这种情况下,您正试图访问某个不存在的属性 要解决这个问题,您需要检查是否同时定义了params和id 您可以这样做:
if (typeof this.props.params !== 'undefined' && this.props.params.id !== 'undefined') {
//do something
}
最好使用typeof检查未定义的变量,因为如果变量的计算结果为false,if语句可能会失败。请尝试:
if(this.props.params){
var id = this.props.params.id;
}
在检查之前:
if(bar.foo){
//做点什么
}
您首先必须检查:
if(bar){
if(bar.foo){
//做点什么
}
}
或者在一份声明中
if(bar&&bar.foo){
//做点什么
}