javascript - 无法在 JEST 的 IF 语句中读取 undefined object 的属性

标签 javascript reactjs jestjs

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

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

现在,这在浏览器中运行良好。 如果参数中有 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/

相关文章:

javascript - 有没有办法将 JS 属性的 setter/getter 抽象为对象的原型(prototype)?

javascript - 如何将 manifest.json 的 start_url 设置为站点的根目录?

reactjs - 从 webview 重定向到 React Native 组件

javascript - ReactJS 不渲染 child

reactjs - 如何使用 FormData 发送 event.target 以模拟函数

php - 如何设置 Flow Play 器根据视频分辨率自动调整大小?

javascript - 如何在不破坏格式化程序的情况下为 flowtype 声明 react 组件的模块类型?

typescript - ts-jest 不识别 es6 导入

javascript - 在传递给 createStore 的 preloadedState 参数中发现意外键

javascript - IntelliJ 调试器无法与 Dojo require 一起使用