基于spock中的调用次数模拟出一个方法的返回

时间:2014-11-04 14:12:11

标签: unit-testing grails groovy spock

是否可以根据调用它的第n次来模拟spock中方法的返回值?请注意,我不想指定传入的参数,因为它与特定的测试用例无关。

例如,对于第一次调用,它应该返回x,对于第二次调用,它应该返回y。

1 个答案:

答案 0 :(得分:10)

是的,这是可能的。

someObject.someMethod(*_) >>> [ 'x', 'y' ]

在第一次调用时返回x,在第二次调用方法时返回y

示例:

void "test something"() {
    given:
    def sample = Mock(Sample){
        someMethod(_) >>> [ 'Hello', 'World' ]
    }

    expect:
    sample.someMethod( 'foo' ) == 'Hello'
    sample.someMethod( 'bar' ) == 'World'
}

class Sample {
    def someMethod(def a) {
        return a
    }
}