Возвращение фиктивных объектов с помощью Mockito с использованием заданных аргументов - PullRequest
0 голосов
/ 31 января 2020

Для моих тестов JUnit с Mockito я делаю следующее:

    Mockito.lenient().when(tokenService.create(String id, Any)).thenReturn(new String (id))

    Mockito.lenient().when(voucherRepo.findById(id String).thenReturn(new Voucher(id));

Я хотел бы получить доступ к идентификатору строки, указанному в методах tokenService.create () и voucherRepo.findById (), создать и затем верните фиктивные объекты, используя его Как это можно сделать?

1 Ответ

1 голос
/ 01 февраля 2020
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);
    }
});

Я не уверен, по какой причине вы должны делать это в своем тесте (поскольку это довольно произвольное определение), но в сомнении рассмотрите возможность добавления некоторого дополнительного контекста к вашему вопросу.

...