Подтвердить что ты не робот

Измените входной параметр функции void и прочитайте его потом

У меня довольно сложная функция java, которую я хочу протестировать с помощью jUnit, и я использую Mockito для этой цели. Эта функция выглядит примерно так:

public void myFunction (Object parameter){
   ...
   doStuff();
   ...
   convert(input,output);
   ...
   parameter.setInformationFrom(output);
}

Преобразование функции устанавливает атрибуты вывода в зависимости от ввода, и это функция типа void, хотя параметр "output" - это то, что используется, как если бы оно возвращалось функцией. Эта функция преобразования - это то, что я хочу макетировать, поскольку мне не нужно зависеть от ввода для теста, но я не знаю, как это сделать, поскольку я не очень хорошо знаком с Mockito.

Я видел основные случаи как when(something).thenReturn(somethingElse) или метод doAnswer, который, как я понимаю, похож на предыдущий, но к нему может быть добавлено больше логики, но я не думаю, что эти случаи подходят для моего случая, так как моя функция не имеет оператора return.

4b9b3361

Ответ 1

Если вы хотите, чтобы посмеянный метод вызывал метод (или иным образом изменял) параметр, вам нужно написать ответ как в этом вопросе ( "Как издеваться над void return, влияющий на объект" ).

Из Кевин Велькер ответ:

doAnswer(new Answer() {
    Object answer(InvocationOnMock invocation) {
        Object[] args = invocation.getArguments();
        ((MyClass)args[0]).myClassSetMyField(NEW_VALUE);
        return null; // void method, so return null
    }
}).when(mock).someMethod();