32

我正在使用 mockito 测试旧版 JAAS/LDAP 登录模块。

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

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

我期望callbacks包含一个NameCallback,这是需要被操纵以通过测试的对象。

有没有办法有效地模拟这个,或者我会更好地使用 stubbed 实现CallbackHandler

4

1 回答 1

41

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

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

并且Answer执行拦截的一个必须作为参数进入doAnswer,例如作为一个匿名类:

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

在这种情况下args将是数组Callback[]

于 2010-08-27T06:26:15.843 回答