Reputation: 7768
Is it possible to mock out the return value of a method in spock based on the nth time it was called? Note that I don't want to specify the parameters passed in because it does not matter for a specific test case.
For example, for the first call it should return x, for the second call it should return y.
Upvotes: 12
Views: 4865
Reputation: 50245
Yes it is possible.
someObject.someMethod(*_) >>> [ 'x', 'y' ]
It will return x
on first invocation and y
on second invocation of the method.
Example:
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
}
}
Upvotes: 18