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' 通话中那样阻止。
我有一个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' 通话中那样阻止。