Ir al contenido principal
Versión: 6.0

Koin

[Traducción Beta No Oficial]

Esta página fue traducida por PageTurner AI (beta). No está respaldada oficialmente por el proyecto. ¿Encontraste un error? Reportar problema →

Koin

El Framework Koin DI puede utilizarse con Kotest mediante la extensión KoinExtension.

Para usar esta extensión en tu proyecto, añade la dependencia:

nota

Desde Kotest 6.0, todas las extensiones se publican nuevamente bajo el grupo io.kotest, con una cadencia de versiones vinculada a los lanzamientos principales de Kotest.

io.kotest:kotest-extensions-koin:${kotestVersion}

¡Con la dependencia añadida, podemos usar Koin fácilmente en nuestras pruebas!

class KotestAndKoin : KoinTest, FunSpec() {
init {
extension(KoinExtension(koinModule) { mockk<UserService>() })

test("use userService") {
val userService by inject<UserService>()

userService.getUser().username shouldBe "LeoColman"
}
}
}

Por defecto, la extensión iniciará/detendrá el contexto de Koin entre pruebas hoja. Si usas un estilo de especificación anidado (como DescribeSpec) y prefieres que el contexto de Koin persista en todas las hojas de una prueba raíz (por ejemplo, para compartir declaraciones simuladas entre pruebas), puedes especificar el modo de ciclo de vida como KoinLifecycleMode.Root en el constructor de KoinExtension.

class KotestAndKoin : KoinTest, DescribeSpec() {

init {
extension(KoinExtension(module = myKoinModule, mode = KoinLifecycleMode.Root))

describe("use userService") {
val userService by inject<UserService>()

it("inside a leaf test") {
userService.getUser().username shouldBe "LeoColman"
}

it("this shares the same context") {
userService.getUser().username shouldBe "LeoColman"
}
}
}
}