Я столкнулся с интересной проблемой при написании модульного теста, включающего насмешку над лямбдой.
@Test
public void spyingLambda() {
final Supplier<String> spy = Mockito.spy((Supplier) () -> "1");
spy.get();
}
Запуск этого теста завершается ошибкой:
Мокито не может издеваться / шпионить, потому что:
- итоговый класс
Одним из способов решения вышеуказанной проблемы является замена лямбды анонимной реализацией:
@Test
public void spyingAnonymousImplementation() {
final Supplier<String> spy = Mockito.spy(new Supplier<String>() {
@Override
public String get() {
return "1";
}
});
spy.get();
}
Хотя оба теста абсолютно одинаковы (IDE предлагает даже заменить анонимную реализацию лямбда-выражением), второй тест не дает сбоя.
Мне было интересно, если это известная проблема, которая может быть исправлена в mockito или есть какие-то другие обходные пути.