【发布时间】:2012-04-24 12:34:46
【问题描述】:
我们在 Spock 中遇到了一个非常奇特的模拟和集合行为。
在 Spock(0.5,Groovy 1.7)given: 块中(amount 是 Integer):
Set<Operand> operands=new HashSet<Operand>()
for (index in amount){
operand = Mock(Operand)
operand.update() >> null
operands.add(operand)
}
每次循环运行后(右括号上的断点),集合中只有一 (1) 个元素,当循环重新开始时,operands.size() == 0。显然,模拟对象神秘地消失了。
在以下版本中,一切正常,循环运行后集合具有operands.size() == amount。
Set<Operand> operands=new HashSet<Operand>()
amount.times{
operand = Mock(Operand)
operand.update() >> null
operands.add(operand)
}
有人知道为什么第一个版本不起作用吗?
【问题讨论】:
-
您使用的是哪个版本的 Spock?
-
抱歉,忘记了。已编辑。 0.5/1.7