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



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