【发布时间】:2014-02-08 01:58:42
【问题描述】:
我使用 Mockito 1.8.0,所以我没有 AnyVararg。目前我的团队还没有升级到更高版本的 Mockito。所以请多多包涵。
类的样子:
public abstract class Parent {
public void someMethod(String a, String b)
{
//.....
}
public void foo(String a, String... b)
{
//.....
}
}
public class Child extends Parent{
public void bar() {
someMethod(a,b);
foo(a,b,c);
methodToFailUsingSpy();
}
}
单元测试
@Test
public void someTest() {
private spyOfChild = //initialize here;
doReturn("Something")).when(spyOfChild).methodToFailUsingSpy();
/* Tried using this, but did not help.
doCallRealMethod().when(spyOfChild).foo(anyString());
*/
spyOfChild.bar();
}
问题 -
当间谍看到someMethod() 时,它会调用抽象类中的真实方法。但是当它看到foo()时,它会尝试找到一个匹配的存根方法,即控制权转到Mockito的MethodInterceptorFilter,因为它无法找到一个模拟,它会抛出java.lang.reflect.InvocationTargetException。
我不希望 foo() 被嘲笑。我希望调用真正的方法,就像它发生在someMethod() 中一样。有人可以解释一下是否是因为使用带有可变长度参数的方法和间谍?
【问题讨论】:
标签: java mockito variadic-functions