Имитация клиента Ktor и репозиториев
Используйте MockEngine и имитации для детерминированных тестов.
«Имитация клиента Ktor и репозиториев» — бесплатный урок Kotlin Multiplatform Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Kotlin Multiplatform Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Kotlin Multiplatform Academy содержит 4 уроков всего.
Части этого урока еще не переведены и отображаются на английском.
Tests Should Not Hit the Network
Real HTTP calls are slow and flaky in tests. Instead you fake the response so each run is fast and deterministic. 🎯
Ktor Ships a MockEngine
Ktor includes a built-in MockEngine that returns canned responses instead of making real requests.
Build a Mock Client
Construct an HttpClient on top of MockEngine and decide exactly what bytes and status it replies with.
val client = HttpClient(MockEngine) {
engine { addHandler { respondOk("[]") } }
}Return Custom JSON
Inside the handler, call respond with the JSON body and headers your code expects to parse.
respond(
content = "{\"name\":\"Sam\"}",
headers = headersOf(HttpHeaders.ContentType, "application/json")
)Simulate Errors
Have the handler reply with a status like 500 to verify your error handling without a real server.
respond("oops", HttpStatusCode.InternalServerError)Inject the Client
Your repository should accept its HttpClient as a parameter, so tests pass the mock and production passes the real one.
class UserRepo(private val client: HttpClient)Why a Fake Repository
To test a ViewModel you do not even need Ktor: pass a fake repository that returns fixed data.
Fake an Interface
Because your repo hides behind an interface, a fake is just a small class implementing it with canned results.
class FakeRepo : UserRepo {
override suspend fun load(id: Int) = User("Sam")
}Control Failure Paths
A fake can also throw on demand, letting you test how callers react to a failing data layer.
override suspend fun load(id: Int): User =
throw IOException("offline")Fakes vs Mocks
A hand-written fake is simple and multiplatform-safe, while mocking libraries often lack full Kotlin/Native support.
Deterministic by Design
With MockEngine and fakes, every test controls its inputs, so results never depend on a network or shared state. ✅
Quick Check
Pick the right way to fake HTTP.
Recap
Swap real HTTP for MockEngine and inject fake repositories so tests stay fast, isolated, and predictable.
Часто задаваемые вопросы
Урок «Имитация клиента Ktor и репозиториев» бесплатный?
Да — полный текст урока «Имитация клиента Ktor и репозиториев» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Kotlin Multiplatform Academy, подпишись на CoddyKit PRO. Курс Kotlin Multiplatform Academy содержит 4 уроков всего.
Чему я научусь в уроке «Имитация клиента Ktor и репозиториев»?
Используйте MockEngine и имитации для детерминированных тестов. Ты практикуешь Kotlin Multiplatform Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Kotlin Multiplatform Academy?
Предыдущий опыт не требуется. Kotlin Multiplatform Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.
Сколько времени занимает урок «Имитация клиента Ktor и репозиториев»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Kotlin Multiplatform Academy?
Да. Каждый урок Kotlin Multiplatform Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- kotlin.test в commonTest
- Тестирование приостанавливаемых функций и потоков данных
- Имитация клиента Ktor и репозиториев
- Запуск тестов для Android и iOS