Я использую Mockito имеет некоторое время, и это очень мощный инструмент. Без него создавать тесты, было бы гораздо более подробной информации, и в некотором смысле сложнее. После того, как хорошо понимать концепции и способа использования разработки и тестирования становится намного быстрее и напористый.
Что такое Mockito?
В Mockito-это платформа Test and Шпиона и его основная цель заключается в имитации создает классов и поведение метода. К mockar зависимость с mockito, я делаю класс, который будет испытываться имитирует традиционный испытанный метод и его зависимостей. Во время мок я могу настроить возвращение и действия в соответствии с необходимостью тестирования.
Основные функции
- Мок – создает экземпляр класса, но Mockada. Если вы вызываете метод, он не будет вызывать метод реального, разве что вы хотите.
- Шпион создает экземпляр класса, который вы можете mockar или позвонить способы реальные. Является альтернативой InjectMocks, когда нужно mockar методы в сам класс, что эта проверяются.
- InjectMocks : создать intancia и внедряет необходимые зависимости, которые с аннотацией @Mock.
- Verify : проверяет количество какие параметры используются для доступа к конкретному метод.
- When : После макет будет создан, вы можете настроить действия вызова и возвращения.
- Совпадения : разрешение на проверку доказательств в отношении аргументов (любой объект(), любая строка() …)
Криандо эм мок
Существует два способа, как создать макет с помощью mockito через статический метод или с аннотацией @Mock
- С помощью метода statico
var EmployeeRepository = Mockito.mock(EmployeeRepository.class)
- аннотации @Mock
@Mock private EmployeeRepository employeeRepository;
Настройка класса протестирован
Объявляя класс давайте напишем она с @InjectMocks. В Mockito будет создать реальный экземпляр этого класса и вводить все объекты @ Мок, которые были объявлены в тестовый класс.
@InjectMocks private EmployeeController employeeController;
Hibilitando заметки
Чтобы эти аннотации @Mock и @InjectMocks работать, необходимо включить их. есть два способа:
- Анотандо классный тест com @RunWith(MockitoJUnitRunner.class )
@RunWith(MockitoJUnitRunner.class) public class EmployeeControllerTest {}
- Usando о насмешливых аннотациях.initMocks () анты до яичек
@Before public void setup() { MockitoAnnotations.initMocks(this); }
Тестирование метода void
Метод, который будет проверено:
@DeleteMapping("/employees/{id}") public void deleteEmployee(@PathVariable Long id) { repository.deleteById(id); }
Испытание
@Test public void deleteEmployee() { employeeController.deleteEmployee(1L); Mockito.verify(employeeRepository, Mockito.times(1)).deleteById(1L); }
Сначала мы вызываем метод, который будет протестирован и переходим в необходимых параметров. А затем используем Mockito.проверить чтобы проверить, если во время выполнения классов mocadas был вызван данный метод. Мы можем проверить несколько вещей Mockito.verify число раз, что, выполненных параметров, принятых и etc.
@Шпионская аннотация
Мы используем @Spy, чтобы шпионить за существующего экземпляра. В приведенном ниже примере я добавил два элемента в списке, а затем проверил, если элементы были даже введены.
@Test public void spyTest() { Listemployees = Mockito.spy(new ArrayList ()); Employee one = new Employee("Bilbo Baggins", "burglar"); Employee two = new Employee("Frodo Baggins", "thief"); employees.add(one); employees.add(two); Mockito.verify(employees).add(one); Mockito.verify(employees).add(two); assertEquals(2, employees.size()); Mockito.doReturn(100).when(employees).size(); assertEquals(100, employees.size()); }
- employees.add() для добавления элементов employees.
- employees.size (), чтобы вернуть 100 вместо 2, используя Mockito.doReturn()
Метод when
С его помощью можно имитировать вызовы на внешние ресурсы класса, такие как доступ к базе данных например, не беспокоясь о том, как будет работать этот запрос, не является обязанностью этого теста. Синтаксис when эта:
- когда(EmployeeRepository.сохранить(макет.любой(Employee.class ))).Затем вернитесь(сотрудник);
- когда(EmployeeRepository.сохранить(макет.эквалайзер(ввод сотрудника))).Затем вернуться(сотрудник) ;
- когда(EmployeeRepository.сохранить(Mockito.любой())).Затем вернуться(сотрудник);
@Test public void newEmployee_test() { Employee employee = EmployeeTest.create(); when(employeeRepository.save(Mockito.any(Employee.class))).thenReturn(employee); ResponseEntitynewEmployee = employeeController.newEmployee(employee); assertEquals(employee.getName(), newEmployee.getBody().getName()); assertEquals(employee.getRole(), newEmployee.getBody().getRole()); }
Репо с примерами
Оригинал: “https://dev.to/daienelima/mockito-como-utilizar-de-maneira-simples-4h86”