Одна из распространенных проблем, с которой сталкиваются разработчики, — это необходимость возвращения того же значения, которое было передано в метод в качестве аргумента. Это обычно требуется при написании тестов, где мокированный метод должен имитировать поведение реального метода.
Возьмем для примера следующий метод:
public String myFunction(String abc){ // некоторый код return abc; }
Предположим, что требуется написать тест, в котором myFunction()
должна быть замокирована так, чтобы она возвращала ту же строку, что и получила.
Для решения этой задачи можно использовать библиотеку Mockito. Mockito — это библиотека для написания тестов на языке Java, которая позволяет создавать и настраивать «моки» (mocks) — объекты с имитацией поведения реальных объектов.
В Mockito имеется специальный метод thenAnswer()
, который можно использовать для возвращения значения, переданного в мокированный метод. В thenAnswer()
передается объект Answer
, который определяет, что должно произойти при вызове мокированного метода.
Код для нашего случая будет выглядеть следующим образом:
when(mockedObject.myFunction(anyString())).thenAnswer(new Answer<String>() { public String answer(InvocationOnMock invocation) { Object[] args = invocation.getArguments(); return (String) args[0]; } });
В этом коде mockedObject
— это мок объект, myFunction(anyString())
— метод, который мы мокируем. В answer()
мы получаем аргументы, переданные в мокированный метод, и возвращаем первый аргумент.
Таким образом, с помощью Mockito можно легко сделать так, чтобы мокированный метод возвращал переданный ему аргумент.
Добавить комментарий