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开始。