Groovy 斯波克:我如何模拟返回我拥有的对象的对象列表
我有一个对象列表,让它是整数:Groovy 斯波克:我如何模拟返回我拥有的对象的对象列表,groovy,spock,Groovy,Spock,我有一个对象列表,让它是整数: list = [1, 3, 8] 我需要一个对象列表,这些对象实际上是这些整数的提供者。即: providersList = [p1.getInteger() = 1, p2.getInteger() = 3, p3.getInteger() = 8] //pseudo code 我如何编写代码 更新 对不起,看起来我有点困惑。这是我第一次接触斯波克,所以我可能会混淆术语和想法 我想模拟一个对象列表。当然,每个对象都有自己的方法。测试将只调用该对象的一个方法。
list = [1, 3, 8]
我需要一个对象列表,这些对象实际上是这些整数的提供者。即:
providersList = [p1.getInteger() = 1, p2.getInteger() = 3, p3.getInteger() = 8] //pseudo code
我如何编写代码
更新
对不起,看起来我有点困惑。这是我第一次接触斯波克,所以我可能会混淆术语和想法
我想模拟一个对象列表。当然,每个对象都有自己的方法。测试将只调用该对象的一个方法。我不需要实现它,因为我知道返回这个方法的确切内容。这些返回值存储在我已经有的列表中
例如,我需要模拟一个对象列表[p1,p2,p3],其中对object.getInteger()的每次调用都返回一些我已经知道的整数,我有一个这些整数的列表:[i1,i2,i3]:p1.getInteger()=i1等
如何在列表[i1、i2、i3]的帮助下模拟[p1、p2、p3]列表?您可以尝试:
@Grab('org.spockframework:spock-core:0.7-groovy-2.0')
@Grab('cglib:cglib-nodep:3.1')
import spock.lang.*
class Test extends Specification {
def 'some spec'() {
given:
def mocks = [1, 2, 3].collect { i -> GroovyMock(SomeClass) {
getInteger() >> i
}
}
expect:
mocks*.getInteger().containsAll([1,2,3])
}
}
class SomeClass {
Integer getInteger() {
0
}
}
我不知道你在问什么?你的意思是像
[providersList=[{->1},{->3},{->8}]
?我也很困惑providersList=[p1,p2,p3];然后做providersList.get(0).getInteger()?抱歉,我已经更新了这个问题。可能很简单,我只是从Spock开始。