Spock:如何模拟返回我拥有的对象的对象列表

时间:2014-10-09 17:12:15

标签: groovy spock

我有一个对象列表,让它成为整数:

list = [1, 3, 8]

我需要一个对象列表,这些对象实际上是这些整数的提供者。即:

providersList = [p1.getInteger() = 1, p2.getInteger() = 3, p3.getInteger() = 8] //pseudo code

我该如何编码?

更新

抱歉,看起来我有点困惑。这是我对Spock的第一次经历,所以我可能会混淆这些术语和想法。

我想模拟一个对象列表。当然,每个对象都有自己的方法。测试将只调用该对象的一种方法。我不需要实现它,因为我知道究竟是什么返回此方法。这些返回值存储在我已经拥有的一些列表中。

即。我需要模拟一个对象列表[p1,p2,p3],其中每次调用object.getInteger()都会返回一些我已经知道的整数,并且我有一个这些整数的列表:[i1,i2,i3]:p1。 getInteger()= i1等。

如何在列表[i1,i2,i3]的帮助下模拟[p1,p2,p3]列表?

1 个答案:

答案 0 :(得分:0)

您可以尝试:

@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
    }
}