目前,当我在Groovy中使用if else时 - spock when:时,只执行if而else不执行。在spock测试中是否还有其他实现if-else的方法?我试过开关盒并遇到了同样的情况。
if (value == 'x' || 'y' || 'z') {
//execute below info
} else if (value == 'a') {
//execute below info
}
答案 0 :(得分:1)
由于时髦的事实' y'被视为布尔 true ,这就是其他未执行的原因。
可能你试图对此进行评估:
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']) {...}
答案 1 :(得分:1)
我不确定是否必须将此作为评论或回答。
else块下的代码未执行,因为value == 'x' || 'y' || 'y'
始终为true,因为字符文字'y'
始终被评估为true。
非空字符串,GStrings和CharSequences被强制为真。
试试这个:if (value == 'x' || value == 'y' )