Я использую Java 8 в течение нескольких месяцев, и я начал использовать выражения Lambda, которые очень удобны для некоторых случаев. Тем не менее, я часто сталкиваюсь с некоторыми проблемами с unit test кодом, который использует Lambda.
Возьмем в качестве примера следующий псевдокод:
private Bar bar;
public void method(int foo){
bar.useLambda(baz -> baz.setFoo(foo));
}
Один из подходов состоит в том, чтобы просто проверить вызов на панели
verify(bar).useLambda(Matchers.<Consumer<Baz>>.any());
Но, делая это, я не тестирую код Лямбды.
Также обратите внимание, что я не могу заменить Lambda на метод и использовать ссылку на метод:
bar.useLambda(This::setFooOnBaz);
Потому что у меня не будет foo для этого метода. Или, по крайней мере, это то, что я думаю.
У вас была эта проблема раньше? Как я могу проверить или реорганизовать свой код, чтобы проверить его правильно?
Edit
Так как я кодирую unit test, я не хочу создавать экземпляр бара, и вместо этого я буду использовать макет. Поэтому я не могу просто проверить вызов baz.setFoo
.