spock测试的where子句中的多个赋值?

Joh*_*zen 4 groovy spock

我正在使用Spock框架进行测试,我在where子句中有关于多变量赋值的问题.

我有以下测试用例:

def "sending a message delegates to message sender"() {
  when:
    sendMessage(x,y)
  then:
    1 * messageSender.send(x,y)
  where:
    x << 1
    y << 2
}
Run Code Online (Sandbox Code Playgroud)

我想用一个赋值操作替换where子句中的多个变量赋值.我试过了:

where:
  [x,y] << [1,2]
Run Code Online (Sandbox Code Playgroud)

但得到了一个MissingMethod异常.我假设这是因为表达式[1,2]被视为数组而不是列表.

请注意以下工作:

where:
  [x,y] << [1,2].combinations()
Run Code Online (Sandbox Code Playgroud)

看起来combination()方法返回一个List类型,但是尽管以下方法不起作用:

where:
  [x,y] << [1,2].asList()
Run Code Online (Sandbox Code Playgroud)

使用combination()是违反直觉的,所以我想知道是否有一种简单,优雅的方式在Spock中初始化多个变量.

编辑:我正在使用spock版本0.7-groovy-2.0

dma*_*tro 5

必须如下所述进行多项任务:

[x, y] << [[1,2]]
Run Code Online (Sandbox Code Playgroud)

这是一个人为的例子,其中一个组合的测试失败.

多个可变数据管道使用SQL ResultSet中的示例,这与上面的示例非常相似.