Ir al contenido principal
Versión: 6.1

Aserciones

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

Kotest se divide en varios submódulos que pueden usarse de forma independiente. Uno de estos submódulos es el soporte completo para aserciones/matchers. Estas pueden utilizarse con el framework de pruebas Kotest o con otros frameworks como JUnit o Spock.

version badge

La funcionalidad principal de los módulos de aserciones son funciones que verifican estados. Kotest denomina a estas funciones matchers. Existen matchers básicos y matchers para bibliotecas de terceros.

También hay otras utilidades para escribir pruebas, como pruebas de excepciones, funciones para ayudar a probar código no determinista, inspectores para colecciones y aserciones suaves para agrupar verificaciones.

Multitud de Matchers

Por ejemplo, para verificar que una variable tiene un valor esperado, podemos usar la función shouldBe.

name shouldBe "sam"

Existen matchers de propósito general como shouldBe, además de matchers para muchos escenarios específicos, como str.shouldHaveLength(10) para verificar la longitud de una cadena, o file.shouldBeDirectory() que comprueba si un archivo es un directorio. Están disponibles en variantes infijas y regulares.

Generalmente las aserciones pueden encadenarse, por ejemplo:

"substring".shouldContain("str")
.shouldBeLowerCase()

myImageFile.shouldHaveExtension(".jpg")
.shouldStartWith("https")

Hay más de 350 matchers distribuidos en múltiples módulos. Consulta todos los matchers aquí.

Pistas (Clues)

A veces una aserción fallida no contiene suficiente información para identificar el problema exacto.

Por ejemplo,

user.name shouldNotBe null

Si esto fallara, simplemente obtendrías:

<null> should not equal <null>

Lo cual no es particularmente útil. Podemos añadir contexto adicional a los mensajes de error mediante pistas (clues).

Inspectores

Los inspectores permiten verificar elementos en una colección y comprobar la cantidad de elementos que deberían pasar la prueba (todos, ninguno, exactamente k, etc.). Por ejemplo:

mylist.forExactly(3) {
it.city shouldBe "Chicago"
}

Consulta los inspectores aquí.

Matchers Personalizados

Es sencillo crear tus propios matchers extendiendo la interfaz Matcher<T>, donde T es el tipo que deseas verificar. Los matchers personalizados pueden combinar matchers existentes o ser completamente independientes.

Consulta un ejemplo completo.