Lambda对Jmockit的期望

时间:2016-02-12 05:49:37

标签: java junit lambda 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号而不是存储在其中的文字对象。这个问题有解决方法吗?

1 个答案:

答案 0 :(得分:1)

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

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

结论:如果你真的想要比较Callable<T>个对象,你必须在具体实现中实现equals,或者你需要确保在期望块中使用相同的实例。在您的&#39;生产代码&#39;调用