是否可以根据调用它的第n次来模拟spock中方法的返回值?请注意,我不想指定传入的参数,因为它与特定的测试用例无关。
例如,对于第一次调用,它应该返回x,对于第二次调用,它应该返回y。
答案 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
}
}