在 Groovy 中使用 if-else 语句 - spock 测试

Using if-else statement inside Groovy - spock test

目前,当我在 Groovy - spock when: 中使用 if else 时,只有 if 被执行而 else 没有。还有其他方法可以在 spock 测试中实现 if-else 吗?我尝试了 switch case 并遇到了同样的情况。

if (value == 'x' || 'y' || 'z') {
    //execute below info
} else if (value == 'a') {
    //execute below info
}

由于 groovy 真相 'y' 被视为布尔值 true,这就是为什么 else 不是已执行。

可能您尝试对此进行评估:

if (value == 'x' || value == 'y' || value == 'y') {
    //execute below info
} else if (value == 'z'){
    //execute below info
}

不过你也可以尝试将if-expression修改为:

if (value in ['x', 'y', 'y']) {...}

我不确定我是否必须对此发表评论或回答。

else 块下的代码未执行,因为 value == 'x' || 'y' || 'y' 始终为真,因为字符文字 'y' 始终计算为真。

Non-empty Strings, GStrings and CharSequences are coerced to true.

试试这个:if (value == 'x' || value == 'y' )