代码之家  ›  专栏  ›  技术社区  ›  brasskazoo

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

  •  28
  • brasskazoo  · 技术社区  · 16 年前

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

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

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

    我在等你 callbacks NameCallback ,这是需要进行操作才能通过测试的对象。

    CallbackHandler ?

    1 回复  |  直到 16 年前
        1
  •  40
  •   brasskazoo    16 年前

    函数返回 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[] !