使用 Java 8 Lambdas 的单元测试代码
我已经使用Java 8几个月了,并且我已经开始使用Lambda表达式,这在某些情况下非常方便。但是,我经常遇到一些问题来对使用 Lambda 的代码进行单元测试。
以下伪代码为例:
private Bar bar;
public void method(int foo){
bar.useLambda(baz -> baz.setFoo(foo));
}
一种方法是只验证柱上的调用
verify(bar).useLambda(Matchers.<Consumer<Baz>>.any());
但是,通过这样做,我不会测试Lambda的代码。
另请注意,我无法将 Lambda 替换为方法和使用方法引用:
bar.useLambda(This::setFooOnBaz);
因为我不会有那个方法的foo。或者至少我是这么认为的。
你以前遇到过这个问题吗?如何测试或重构我的代码以正确测试它?
编辑
由于我正在编码的是单元测试,因此我不想实例化bar,我将使用模拟。因此,我将无法仅验证该呼叫。baz.setFoo