使用Mockito,如何拦截void方法上的回调对象?
我正在使用mockito来测试遗留的JAAS / LDAP登录模块。
javax.security.auth.callback.CallbackHandler
接口定义了该函数:
void handle(javax.security.auth.callback.Callback[] callbacks)
我期待callbacks
包含一个NameCallback
,这是需要操作以通过测试的对象。
有没有办法有效地模拟这个,或者我会更好地使用CallbackHandler
的存根实现?
对于返回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[]
!