Ir al contenido principal
Versión: 6.2 🚧

Oyentes de instante actual

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

consejo

Desde Kotest 5.6.0, los listeners para el instante actual se encuentran en el artefacto io.kotest:kotest-extensions-now:${kotest-version}.

Añádelo como dependencia para utilizar cualquiera de las funcionalidades mencionadas a continuación.

Oyentes de instante actual

A veces querrás usar las funciones estáticas now de las clases java.time por diversos motivos, como establecer la fecha de creación de una entidad

data class MyEntity(creationDate: LocalDateTime = LocalDateTime.now()).

¿Pero qué hacer cuando necesitas probar ese valor? ¡now será diferente cada vez que lo invoques!

Para esto, Kotest proporciona las funciones ConstantNowListener y withConstantNow.

Al ejecutar tu código, tu now siempre será el valor que quieres verificar.

val foreverNow = LocalDateTime.now()

withConstantNow(foreverNow) {
LocalDateTime.now() shouldBe foreverNow
delay(10) // Code is taking a small amount of time to execute, but `now` changed!
LocalDateTime.now() shouldBe foreverNow
}

O, con un listener para todas las pruebas:

  override fun listeners() = listOf(
ConstantNowTestListener(foreverNow)
)
precaución

withContantNow y ConstantNowTestListener son muy sensibles a condiciones de carrera. Al usarlos, se simula el método estático now que es global para toda la instancia JVM. Si los utilizas ejecutando pruebas en paralelo, los resultados pueden ser inconsistentes.