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

时间:2014-03-03 23:59:38

标签: 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
}

我想用单个赋值操作替换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

1 个答案:

答案 0 :(得分:5)

必须按照以下说明进行多项任务:

[x, y] << [[1,2]]

这是一个contrived example,其中一个组合的测试失败。

Multiple variable data pipes使用SQL ResultSet中的一个示例,它与上面的示例非常相似。