一个虚空法的body有可能用莫比托吗?



我想使用Mockito重写类的单个void方法的实现。其他方法应该存根。

我已经尝试过这样的东西,但它不编译自java.lang.Void != void:

MyObj obj = mock(MyObj.class);
doAnswer(new Answer<Void>() {
    @Override
    public Void answer(InvocationOnMock invocationOnMock) throws Throwable {
        return null;
    }
}).when(obj.myMethod(any(String.class)));

没有"doInvoke"或类似的东西吗?

在模拟扩展类之前,我必须诉诸标准的Java类扩展和重写吗?

来自文档:

存根void需要与when(Object)不同的方法,因为编译器不喜欢括号内的void方法…

doThrow(Throwable)替代stubVoid(Object)方法进行空隙存根。主要原因是提高了可读性和与doAnswer()方法族的一致性。

对于任何方法,您都可以使用doThrow(), doAnswer(), doNothing(), doReturn()doCallRealMethod()来代替相应的when()调用。

  • stub void methods
  • 监视对象的存根方法(见下文)
  • 多次存根相同的方法,以在测试过程中更改模拟的行为。

,但是对于所有存根调用,您可能更喜欢使用这些方法来代替when()的替代方法。

听起来你只是想要:

doAnswer(new Answer<Void>() {
    @Override
    public Void answer(InvocationOnMock invocationOnMock) throws Throwable {
        return null;
    }
}).when(obj).myMethod(any(String.class));

最新更新