Ir al contenido principal
Versión: 5.8.x

Introducción a las Extensiones

[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 →

Las extensiones son ganchos del ciclo de vida reutilizables. De hecho, internamente los ganchos del ciclo de vida se representan como instancias de extensiones. Anteriormente, Kotest usaba el término listeners para interfaces simples y extension para interfaces más avanzadas, pero no existe distinción entre ambos y los términos pueden usarse indistintamente.

Cómo usar

El uso básico consiste en crear una implementación de la interfaz de extensión requerida y registrarla para una prueba, un spec o a nivel global del proyecto en ProjectConfig.

Por ejemplo, aquí creamos un listener de antes y después del spec, y lo registramos en un spec:

class MyTestListener : BeforeSpecListener, AfterSpecListener {
override suspend fun beforeSpec(spec:Spec) {
// power up kafka
}
override suspend fun afterSpec(spec: Spec) {
// shutdown kafka
}
}


class TestSpec : WordSpec({
extension(MyTestListener())
// tests here
})

Cualquier extensión registrada dentro de un Spec se aplicará a todas las pruebas de ese spec (incluyendo factorías de pruebas y pruebas anidadas).

Para ejecutar una extensión en cada spec de todo el proyecto, puedes marcar el listener con @AutoScan o registrarlo mediante la configuración del proyecto.

Ejemplo de @AutoScan en un listener de proyecto:

@AutoScan
object MyProjectListener : BeforeProjectListener, AfterProjectListener {
override suspend fun beforeProject() {
println("Project starting")
}
override suspend fun afterProject() {
println("Project complete")
}
}
precaución

Algunas extensiones solo pueden registrarse a nivel de proyecto. Por ejemplo, registrar un BeforeProjectListener dentro de un spec no tendrá efecto porque el proyecto ya habrá comenzado cuando se encuentre esa extensión.