Sobes.tech
Junior — Middle

Testlerde expect ve actual ana yapıların temel farklarını ve amaçlarını açıklayabilir misin?

sobes.tech yapay zeka

AI'dan gelen yanıt

Ключевые конструкции expect и actual используются в Kotlin Multiplatform для реализации платформозависимого кода.

  • expect объявляет интерфейс, класс, функцию или свойство без реализации — то есть задаёт контракт, который должен быть реализован на каждой целевой платформе.
  • actual предоставляет конкретную реализацию для платформы (Android, iOS, JVM и т.д.).

В контексте тестирования это позволяет писать общий тестируемый код с expect-объявлениями, а для каждой платформы реализовывать actual-версию, что упрощает кроссплатформенное тестирование.

Пример:

// commonMain
expect fun getPlatformName(): String

// androidMain
actual fun getPlatformName() = "Android"

// iosMain
actual fun getPlatformName() = "iOS"

Таким образом, expect/actual помогают разделять платформозависимую логику и обеспечивают возможность писать тесты, которые работают на всех платформах.