我正在使用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
}
我想用单个赋值操作替换where子句中的多个变量赋值。我试过了:
where:
[x,y] << [1,2]
但是有一个 MissingMethod 异常。我认为这是因为表达式 [1,2] 被视为数组而不是列表。
请注意以下方法:
where:
[x,y] << [1,2].combinations()
似乎组合()方法返回 List 类型,但尽管以下情况不起作用:
where:
[x,y] << [1,2].asList()
使用组合()是违反直觉的,所以我想知道是否有一种简单,优雅的方法在Spock中初始化多个变量。
编辑:我正在使用spock版本0.7-groovy-2.0
答案 0 :(得分:5)
必须按照以下说明进行多项任务:
[x, y] << [[1,2]]
这是一个contrived example,其中一个组合的测试失败。
Multiple variable data pipes使用SQL ResultSet中的一个示例,它与上面的示例非常相似。