Я использую 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() {
List employees = 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);
ResponseEntity newEmployee = 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”