【发布时间】:2019-06-24 03:42:37
【问题描述】:
如何将模拟对象注入 Spock 中的间谍实例?
例子:
测试类
class Service {
@AutoWired
private Util util;
public void testMethod(int a, int b) {
int c = sum(a,b);
util.format(c);
}
private int sum(int a, int b) {
......
}
}
斯波克:
def "testMethod with valid inputs"() {
given:
def serviceSpy = Spy(Service)
//spy.util = Mock(Util) I can't do this
spy.sum(_,_) >> 2
......
}
那么,我的疑问是如何将模拟对象注入到间谍实例中?
我试图窥探现有实例,但它没有对测试类中的方法存根。
有人可以建议我吗,我可以在这里做什么?或者我可以使用 Junit(Mockito) 轻松解决它吗?
【问题讨论】:
-
将 Spock 版本升级到 1.3 后,我可以监视现有实例
def serviceSpy = Spy(service)使用它,我将模拟对象注入间谍的问题已解决。而且由于我无法存根私有方法(在间谍类上),我将方法更新为受保护,现在它工作正常。但我想知道是否可以像我们在 powermockito 中所做的那样在间谍类上存根私有方法```PowerMockito.doReturn(3).when(spiedObject, "methoidName", ...); `
标签: java junit mockito spock powermockito