У меня есть метод, который принимает в качестве параметра объект и ссылку на метод для этого объекта, чтобы собрать целые числа в коллекции из этого объекта. Код работает нормально, но я не могу выполнить модульное тестирование с помощью метода mockito для метода when ().
public class UserCredentials {
private Integer accountId;
private Integer customerNameId;
}
public class UserCredentialsUtil {
public List<Integer> userCredentialsGetter(
final List<UserCredentials> userCredentials,
final Function<UserCredentials, Integer> func) {
return userCredentials.stream().map(func).collect(Collectors.toList());
}
}
Мой юнит-тест в основном возвращает мне пустой список.
@Mock
private UserCredentialsUtil userCredentialsUtil;
final List<Integer> accountIds = Arrays.asList(1, 2, 3);
when(
this.userCredentialsUtil.userCredentialsGetter(
userCredentials,
UserCredentials::getAccountId)).thenReturn(accountIds);
Я знаю, что это не проблема с моей настройкой, потому что если я изменю UserCredentialsGetter на
public List<Integer> userCredentialsGetter(
final List<UserCredentials> userCredentials) {
return userCredentials.stream().map(UserCredentials::getAccountId).collect(Collectors.toList());
}
И метод испытания до.
when(
this.userCredentialsUtil.userCredentialsGetter(
userCredentials)).thenReturn(accountIds);
Это отлично работает. Я предполагаю, что мне нужно передать что-то еще, кроме ссылки на метод, в качестве параметра для моего первого теста, но мне не повезло найти кого-то еще, кто входит в этот случай, хотя это кажется довольно распространенным явлением.