2014-11-04 277 views
3

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

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

+0

很奇怪的要求。这是不可能的,你需要/想要达到什么目标?什么情况? – Opal 2014-11-04 14:15:41

+0

@Opal我有一个服务方法,我迭代,直到该方法返回一个特定的值,现在我只需要验证迭代过程/循环是否按预期工作。 – froi 2014-11-04 14:18:33

回答

5

是的,这是可能的。

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 
    } 
} 
+0

正是我在找的东西。谢谢 – froi 2014-11-04 15:21:28

相关问题