很高兴看到我们可以从Spock 1.1开始使用detached mocks,特别是如果我们想为样板UT编码创建一个模拟实用程序。
但似乎DetachedMockFactory拒绝使用闭包进行初始化。
class MockUtils {
def mockFactory = new DetachedMockFactory()
IRequestContextGetter mockDefaultRequestContext() {
return mockFactory.Mock(IRequestContextGetter) {
tenant >> Constants.TENANT
currencyType >> CurrencyEnum.SGD
}
}
}
它抛出以下错误:
不能将“spock.mock.DetachedMockFactory”中的“模拟”应用于“(java.lang.Class<com.bytedance.cg.gcrm.salesplanning.common.utils.requestcontext.IRequestContextGetter>,groovy.lang.闭包)”
如何创建一个带有闭包的分离的mock?
1条答案
按热度按时间np8igboo1#
简而言之,你不能。
更长的答案是,在Spock中,模拟交互实际上是规范的一部分,而不是模拟对象本身。因此,分离的模拟在被附加到规范之前不能有任何交互。
有一种方法,但相当繁琐。您可以定义自己的IDegLira来处理模拟交互,并以这种方式自定义您的响应。
在Groovy Web Console中试用