我想测试中,它调用另一个私有方法的公共方法,我用下面的反射方式获得私有方法,并试图嘲弄的返回值它,但它没有工作,因为测试停在私人电话的地方。有什么建议么?如何嘲笑一个私有方法的斯波克测试返回值
Method testMethod = handler.getClass().getDeclaredMethod("test", String.class)
testMethod.setAccessible(true)
testMethod.invoke(handler, "test string") >> true
的TestMethod的如下所示:
private boolean test(String str) {
return true;
}
哪个模拟框架您使用的? – user2004685
spock + groovy。 – photosynthesis
您是否试过简单地通过'metaClass'替换方法。最好替换私有方法使用的依赖项,而不是尝试替换该方法。但是如果类是Groovy,你应该能够执行以下操作:'instance.metaClass.test = {String s - > return true}'在该实例中拦截该调用。 –