... > Kotlin > Mockito и тестирование...

Mockito и тестирование с имитацией объектов в Kotlin

НАВИГАЦИЯ ПО СТРАНИЦЕ

Зависимость в build.gradle Пример использования Mockito

Mockito — это библиотека для создания и использования mock-объектов (объектов-заменителей) в тестировании.

Mock-объекты позволяют создавать имитацию реальных объектов и управлять их поведением в тестах. Давайте рассмотрим пример использования Mockito в тестировании с имитацией объектов.

Зависимость в build.gradle

Добавьте зависимость на Mockito в файл build.gradle:

dependencies {
    testImplementation 'org.mockito:mockito-core:3.12.0'
}

Пример использования Mockito

Рассмотрим пример тестирования сервиса, который зависит от внешнего ресурса, такого как база данных:

import org.junit.Test
import org.mockito.Mockito.`when`
import org.mockito.Mockito.mock
import kotlin.test.assertEquals

class ExampleServiceTest {

    @Test
    fun testExampleService() {
        // Создание mock-объекта базы данных
        val databaseMock = mock(Database::class.java)

        // Внедрение зависимости (dependency injection)
        val service = ExampleService(databaseMock)

        // Задание поведения mock-объекта
        `when`(databaseMock.getData()).thenReturn("Mocked data")

        // Вызов метода объекта, зависящего от базы данных
        val result = service.getDataFromDatabase()

        // Проверка ожидаемого результата
        assertEquals("Mocked data", result)
    }
}

В этом примере:

  1. Database — это интерфейс, представляющий внешний ресурс (например, базу данных).

  2. ExampleService — это класс, зависящий от Database и использующий его методы.

С помощью Mockito создается mock-объект databaseMock, который заменяет реальный объект Database. Затем задается поведение этого mock-объекта с использованием метода when, и вызывается метод getDataFromDatabase объекта ExampleService. После этого проверяется, что результат соответствует ожидаемому.

Такой подход позволяет тестировать код, зависящий от внешних ресурсов, без фактического взаимодействия с ними, что делает тесты более изолированными и предсказуемыми.