Тесты Пообщаться с GPT Протестировать код
Программирование Аналитика Дизайн Маркетинг Управление проектами
16 Сен 2023
2 мин
527

Как замокать метод без учета аргументов в Mockito?

Пройдите тест, узнайте какой профессии подходите

Во время написания тестов на Java с использованием библиотеки Mockito может возникнуть ситуация, когда необходимо замокать метод, который принимает в качестве

Во время написания тестов на Java с использованием библиотеки Mockito может возникнуть ситуация, когда необходимо замокать метод, который принимает в качестве аргумента объект, создаваемый через оператор new. Например, есть код:

FooDao fooDao = new FooDao();
Bar bar = fooDao.getBar(new Baz());

И нужно написать тест, в котором метод getBar() всегда возвращал бы конкретный объект Bar, независимо от передаваемого в него аргумента. На первый взгляд, это может показаться сложной задачей, ведь при каждом вызове создается новый объект Baz.

Однако в Mockito существует возможность для таких случаев, и решение проблемы не так сложно, как может показаться. Для этого используется метод any().

Метод any() используется для игнорирования аргументов метода при стабинге. Вместо конкретного объекта в метод when() передается any(). Это позволяет замокать метод так, чтобы он возвращал заданный объект независимо от передаваемого в него аргумента.

Например, для метода getBar() это будет выглядеть следующим образом:

FooDao fooDao = mock(FooDao.class);
Bar myBar = new Bar();

when(fooDao.getBar(any(Baz.class))).thenReturn(myBar);

Теперь, независимо от того, какой объект Baz передается в метод getBar(), он всегда будет возвращать объект myBar.

Итак, благодаря использованию метода any() в Mockito, можно легко замокать метод так, чтобы он возвращал заданный объект независимо от передаваемого в него аргумента. Это очень удобно при написании тестов для кода, где методы вызываются с аргументами, создаваемыми через оператор new.

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