Mockito.when(voucherRepo.findById(id)).thenReturn(new Voucher(id));
Ваше решение должно работать и, вероятно, является предпочтительным решением для любого четко определенного теста. Как вы знаете из своего теста, каков точный id
, вы можете просто вернуть для него указанный c объект.
Другой способ сделать это - для произвольных строк - использовать функциональность thenAnswer
mockito :
Mockito.when(voucherRepo.findById(Mockito.any(String.class))).thenAnswer(new Answer<Voucher>() {
@Override
public Voucher answer(InvocationOnMock invocation) throws Throwable {
Object[] args = invocation.getArguments();
String id = (String) args[0];
return new Voucher(id);
}
});
Я не уверен, по какой причине вы должны делать это в своем тесте (поскольку это довольно произвольное определение), но в сомнении рассмотрите возможность добавления некоторого дополнительного контекста к вашему вопросу.