gpt4 book ai didi

java - 使用 Mockito,如何在 void 方法上拦截回调对象?

转载 作者:IT老高 更新时间:2023-10-28 21:12:42 26 4
gpt4 key购买 nike

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

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

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

我希望 callbacks 包含一个 NameCallback,它是需要被操作以通过测试的对象。

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

最佳答案

对于返回 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[]!

关于java - 使用 Mockito,如何在 void 方法上拦截回调对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3581754/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com