spock如何确定哪个iteratable比另一个更大?

时间:2017-12-07 05:28:59

标签: groovy spock

我正在spock中阅读此文档:http://spockframework.org/spock/docs/1.1/data_driven_testing.html并遇到了数据变量分配部分,其中包含以下代码片段:

a = 3
b = Math.random() * 100
c = a > b ? a : b

但是如果我尝试使用可迭代的

怎么办?
a << [6, 2, 0]
b << [4, 10, 10]
c = a > b ? a : b

1 个答案:

答案 0 :(得分:1)

没有。

Spock重写了你的测试规范(通过使用groovy编译器注册AST转换)。

对于where:子句,它创建代码以迭代到ab提供的列表(并依次为每个值分配这些局部变量)并运行代码每次迭代都c = a > b ? a : b

where:子句的代码转换位于班级org.spockframework.compiler.WhereBlockRewriterhttps://github.com/spockframework/spock/blob/master/spock-core/src/main/java/org/spockframework/compiler/WhereBlockRewriter.java