Mockito и тестирование с имитацией объектов в Kotlin
НАВИГАЦИЯ ПО СТРАНИЦЕ
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)
}
}
В этом примере:
Database — это интерфейс, представляющий внешний ресурс (например, базу данных).
ExampleService — это класс, зависящий от Database и использующий его методы.
С помощью Mockito создается mock-объект databaseMock, который заменяет реальный объект Database. Затем задается поведение этого mock-объекта с использованием метода when, и вызывается метод getDataFromDatabase объекта ExampleService. После этого проверяется, что результат соответствует ожидаемому.
Такой подход позволяет тестировать код, зависящий от внешних ресурсов, без фактического взаимодействия с ними, что делает тесты более изолированными и предсказуемыми.