gpt4 book ai didi

java - Jmockit 中的 Lambda 期望

转载 作者:行者123 更新时间:2023-12-01 10:26:06 25 4
gpt4 key购买 nike

我有一个 I/F

public interface NumberIF {
public Integer getNumber();
}

当我尝试调用以下函数时;

public void func(NumberIF data)

我对 lambda 使用以下方式

func(() -> 5)

问题是我无法将上述函数与 JMockit 的期望相匹配...

new Expectations() { { someclass.func(() -> 5); }

对于Callable<T>对象,.equals方法总是比较某种 id 号而不是存储在其中的文字对象。这个问题有解决办法吗?

最佳答案

JMockit使用 equals 匹配期望/验证 block 中的参数方法(默认情况下比较对象 ID)。

在您的示例中,由 lambda 表达式 ( () -> 5 ) 创建的对象未实现 equals方法因此比较对象 ID。

底线:如果你真的想比较Callable<T>对象,您要么必须实现 equals在具体实现中,或者您需要确保在期望 block 中使用与“生产代码”调用中相同的实例。

关于java - Jmockit 中的 Lambda 期望,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35355667/

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