Вебинары Разобраться в IT Реферальная программа
Программирование Аналитика Дизайн Маркетинг Управление проектами
7 профессий по цене одной
07:05:47:06
дн. ч. мин. сек.
24 Сен 2024
2 мин
132

Возвращение переданных аргументов с помощью Mockito

Одна из распространенных проблем, с которой сталкиваются разработчики, — это необходимость возвращения того же значения, которое было передано

Одна из распространенных проблем, с которой сталкиваются разработчики, — это необходимость возвращения того же значения, которое было передано в метод в качестве аргумента. Это обычно требуется при написании тестов, где мокированный метод должен имитировать поведение реального метода.

Возьмем для примера следующий метод:

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 можно легко сделать так, чтобы мокированный метод возвращал переданный ему аргумент.

Проверь как ты усвоил материалы статьи
Пройди тест и узнай насколько ты лучше других читателей

Добавить комментарий