期望块中的条件

Condition in expect block

我刚刚注意到,如果我在 expect 块中添加 if 子句,Spock 不会断言条件,如

def myTest() {
  given:
    a = true

  expect:
    if ( a ) {
      1 == 2
    }
    else {
      1 == 1
    }      
}

上面的 测试将通过 因为 条件没有被检查。 或者条件检查没有被转发通过 if 语句。

解决方法是在 if 块中添加 assert 语句,即断言 1 == 2。

我感兴趣的是,为什么功能是这样的?还有其他方法可以解决这个问题吗?我假设这与 Groovy if 语句功能有关,但我不太了解语言细节。很可能 if 语句不会 return Spock 的 expect 块可以使用的任何东西。

这与groovy无关。 Spock 的 documentation 明确指出在 thenexpect 中仅将顶级表达式视为条件。这是设计使然。

在 link 中搜索顶部。