仅在 spock 中模拟基于调用次数的方法返回
Posted
技术标签:
【中文标题】仅在 spock 中模拟基于调用次数的方法返回【英文标题】:mock out return of a method base on the number of invocation only in spock 【发布时间】:2014-12-31 11:14:35 【问题描述】:是否可以根据第 n 次调用 spock 中的方法的返回值来模拟它?请注意,我不想指定传入的参数,因为它对于特定的测试用例无关紧要。
例如,第一次调用应该返回 x,第二次调用应该返回 y。
【问题讨论】:
很奇怪的要求。开箱即用是不可能的,您需要/想要实现什么?场景是什么? @Opal 我有一个服务方法,我会对其进行迭代,直到该方法返回特定值,现在我只需要验证迭代过程/循环是否按预期工作。 【参考方案1】:是的,这是可能的。
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
【讨论】:
正是我想要的。谢谢 谢谢!!这也是我的测试所需要的以上是关于仅在 spock 中模拟基于调用次数的方法返回的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Spock 控制器测试中模拟 Grails 请求对象方法
如何在 Grails 单元测试中使用 Spock 模拟 passwordEncoder