Mock的Mock Void类型

时间:2014-12-17 17:27:17

标签: mockito

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

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

1 个答案:

答案 0 :(得分:2)

因为Void is final and not instantiable,所以没有你可以返回的实例。在生产中,该方法只能返回null(如果它完全返回),并且在测试中也应如此。

请注意,对于返回除集合和原始包装之外的Object实例的方法,Mockito将return null by default,因此如果需要覆盖spied方法,则只需要存根返回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;
  }
}