Часто в процессе разработки и тестирования программного обеспечения возникает необходимость проверки, вызывался ли определённый метод на объекте, который был создан внутри другого метода. Это становится особенно актуально при использовании библиотеки Mockito для написания модульных тестов на языке Java.
Рассмотрим пример:
public class ExampleClass { public void mainMethod() { HelperClass helper = new HelperClass(); helper.subMethod(); } }
В приведённом коде метод mainMethod
создаёт экземпляр класса HelperClass
и вызывает на нём метод subMethod
. При написании модульного теста может возникнуть задача проверить, что метод subMethod
действительно вызвался один раз после вызова mainMethod
.
В Mockito для этого используется метод verify()
. Однако, применить его в данном случае напрямую не получится, поскольку объект helper
создаётся внутри метода mainMethod
и не доступен извне.
На этом этапе можно воспользоваться другим инструментом Mockito — @InjectMocks
. Эта аннотация позволяет автоматически создать мок-объект и внедрить его в тестируемый класс.
Пример использования:
@RunWith(MockitoJUnitRunner.class) public class ExampleClassTest { @Mock private HelperClass helperMock; @InjectMocks private ExampleClass example; @Test public void testMainMethod() { example.mainMethod(); verify(helperMock, times(1)).subMethod(); } }
В этом примере создаётся мок-объект helperMock
класса HelperClass
и внедряется в тестируемый экземпляр класса ExampleClass
. После вызова mainMethod
на example
можно проверить, что метод subMethod
был вызван на моке helperMock
ровно один раз.
Таким образом, с помощью Mockito можно решить задачу проверки вызова метода на объекте, который создаётся внутри другого метода.
Добавить комментарий