Рубрики
Без рубрики

Mockito: как использовать простой способ

Я использую Mockito имеет некоторое время, и это очень мощный инструмент. Без него создавать тесты, было бы мю… Помечено как mockito, java, тестирование, тест.

Я использую 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”