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

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 来检查 undefined variable 要好得多,因为如果变量的计算结果为 false,您的 if 语句可能会失败。

关于javascript - 无法在 JEST 的 IF 语句中读取 undefined object 的属性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35497409/

10-13 06:03
查看更多