gpt4 book ai didi

java - 将参数传递到函数接口(interface)的 ArgumentCaptor 中

转载 作者:行者123 更新时间:2023-11-30 02:39:27 24 4
gpt4 key购买 nike

我有一个界面

MyFunctionalInterface<T> {
T execute(SomeClass var)
}

我还有一个正在 mock 的对象,它调用一个方法

myObject.myMethod(var -> someOtherMethod(var, arg))

我通过声明来 mock 这个对象

ArgumentCaptor<MyFunctionalInterface> functionalInterfaceCaptor;
...
when(myMockObject.myMethod(functionalInterfaceCaptor.capture())).then(doSomething)

我想获取 arg 的值来 self 的functionalInterfaceCaptor 。我知道它正在存储这个值,因为当我进入 Intellij 调试器并单击 functionalInterfaceCaptor 时我可以看一下私有(private)字段capturingMatcher然后字段 arguments其中,这是一个包含值 var 的链表和 arg 的值。但是,我不知道需要调用哪些方法 functionalInterfaceCaptor在我的测试中看到这些(ArgumentCaptor没有暴露任何)。如何获取 arg 的值?

最佳答案

当您调用 myObject.myMethod(var -> someOtherMethod(var, arg)) 时,该方法的参数是 lambda var -> someOtherMethod(var, arg) 。因此,您的 functioningInterfaceCaptor 捕获 lambda 本身,而不是调用它的参数。

如果你想捕获arg,那么你必须模拟定义someOtherMethod的对象,并为此方法设置一个ArgumentCaptor

关于java - 将参数传递到函数接口(interface)的 ArgumentCaptor 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42171203/

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