所以我试图测试方法methodUnderTest
,它是这样的:
methodUnderTest{
//Other stuff that works nice
this.setterMethod(OtherClass.methodThatErrors(arg1));
}
所以我试图避免使用静态方法调用methodThatErrors
。
到目前为止我在做什么:
ClassUnderTest spy = Mockito.spy(objectOfClassUnderTest);
Mockito.doNothing().when(spy).setterMethod(Mockito.any(OtherClass.class));
然而,这不起作用,仍在调用该方法。我会认为它根本不应该调用参数方法,因为我已经为any
的参数写了setterMethod
。那么如何使用Mockito阻止此呼叫,而不是PowerMockito。
编辑:
所以我设法通过移动静态方法调用来模拟它:
methodUnderTest{
this.extraSetterMethod(arg1);
}
extraSetterMethod(arg1){
this.setterMethod(OtherClass.methodThatErrors(arg1));
}
我真的不喜欢这个解决方案,因为它添加了几行额外的代码(更多的是用javadoc),这只会使类变得更加混乱。
答案 0 :(得分:1)
这里的问题是值是从静态方法直接,而不是setter本身。无论它获得什么价值,都来自方法本身的真实调用。嘲笑对二传手的召唤没有效果;这不是设置者出错的结果。
这是一个必须做出艰难决定的情景:
强烈 鼓励后者,特别是如果您正在处理对签名更改不太宽容的遗留代码库。