使用Mockito,我如何拦截void方法上的回调对象?

2022-09-01 09:52:10

我正在使用mockito来测试一个遗留的JAAS / LDAP登录模块。

该接口定义了以下函数:javax.security.auth.callback.CallbackHandler

void handle(javax.security.auth.callback.Callback[] callbacks)

我希望包含一个 ,这是需要操作才能通过测试的对象。callbacksNameCallback

有没有办法有效地嘲笑这一点,或者我会更好地实现一个存根的?CallbackHandler


答案 1

对于返回的函数,请使用 doAnswer()void

doAnswer(...).when(mockedObject).handle(any(Callback[].class));

执行拦截的 必须作为 参数进入,例如作为匿名类:AnswerdoAnswer

new Answer() {
  public Object answer(InvocationOnMock invocation) {
      Object[] args = invocation.getArguments();
      Mock mock = invocation.getMock();
      return null;
  }}

在本例中将是数组 !argsCallback[]


答案 2

推荐