无法在JEST

时间:2016-02-19 04:37:42

标签: javascript reactjs jestjs

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

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

现在,这在浏览器中运行良好。 如果params中有id,则输入if子句,如果没有id则不会。

现在用jest编写测试时,如果未定义id,则会抛出错误: "无法阅读财产' id'未定义" 为什么会发生这种情况,不应该将其视为虚假吗? 它在浏览器中工作正常,只是在测试中它会抛出错误。

3 个答案:

答案 0 :(得分:1)

如果id本身未定义,那么你的测试按预期工作(尽管有更好的编写方法)

你得到的问题是来自this.props.params未定义。在这种情况下,您试图访问一些不存在的属性。

要解决此问题,您需要检查是否定义了params AND id。

你可以这样做:

if (typeof this.props.params !== 'undefined' && this.props.params.id !== 'undefined') {
    //do something
}

使用typeof检查未定义的变量要好得多,因为如果变量的计算结果为false,则if语句可能会失败。

答案 1 :(得分:0)

尝试:

if(this.props.params){
    var id = this.props.params.id;
}

答案 2 :(得分:0)

在您可以检查之前:

if (bar.foo) {
// do something
}

您首先需要检查:

if (bar) {
  if (bar.foo) {
    // do something
  }
}

或者在一个陈述中...

if (bar && bar.foo) {
  // do something
}