无法在 JEST 的 IF 语句中读取未定义对象的 属性
Cannot read property of an undefined object in a IF statement in JEST
我有一个简单的 if-else 语句
if(this.props.params.id){
//do something
}
现在,这在浏览器中运行良好。
如果参数中有 id,它会进入 if 子句,如果没有 id,则不会。
现在用 jest 编写测试时,如果未定义 id,则会抛出错误:
"Cannot read property 'id' of undefined"
为什么会这样,难道不应该把它当作假的吗?
它在浏览器中运行良好,只是在测试中它抛出一个错误。
如果 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) {
// do something
}
您首先必须检查:
if (bar) {
if (bar.foo) {
// do something
}
}
或者在一个声明中...
if (bar && bar.foo) {
// do something
}
我有一个简单的 if-else 语句
if(this.props.params.id){
//do something
}
现在,这在浏览器中运行良好。 如果参数中有 id,它会进入 if 子句,如果没有 id,则不会。
现在用 jest 编写测试时,如果未定义 id,则会抛出错误: "Cannot read property 'id' of undefined" 为什么会这样,难道不应该把它当作假的吗? 它在浏览器中运行良好,只是在测试中它抛出一个错误。
如果 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) {
// do something
}
您首先必须检查:
if (bar) {
if (bar.foo) {
// do something
}
}
或者在一个声明中...
if (bar && bar.foo) {
// do something
}