Jmockit 中的 Lambda 期望值

Lambda expectations in Jmockit

我有一个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 方法(默认比较对象 ID)匹配 expectation/verifications 块中的参数。

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

底线:如果你真的想比较 Callable<T> 个对象,你要么必须在具体实现中实现 equals,要么你需要确保你在你的期望中使用相同的实例像在您的 'production code' 通话中那样阻止。