Mock Void type in Mockito



假设Foo是我们模拟的类,Foo有一个名为Foo.bar()的方法,它返回类型Void(不是void(。我们如何用Mockito来模拟这种方法?

不确定在这种情况下返回null是否是最佳解决方案。

因为 Void 是最终的,不可实例化,所以你永远无法返回任何实例。在生产中,该方法只能返回null(如果它返回的话(,这在测试中也应该成立。

请注意,默认情况下,对于返回集合和基元包装器以外的 Object 实例的方法,Mockito 将返回 null,因此,如果您需要重写监视方法,则只需存根返回 Void 的方法:

// Spy would have thrown exception
// or changed object state
doReturn(null).when(yourSpy).someMethodThatReturnsVoid();

或者抛出异常:

// Throw instead of returning null by default
when(yourMock.someMethodThatReturnsVoid()).thenThrow(new RuntimeException());

或者用答案回应:

when(yourMock.someMethodThatReturnsVoid()).thenAnswer(new Answer<Void>() {
  @Override public void answer(InvocationOnMock invocation) {
    // perform some action here
    return null;
  }
}

相关内容

  • 没有找到相关文章

最新更新