Continuamente
Esta página fue traducida por PageTurner AI (beta). No está respaldada oficialmente por el proyecto. ¿Encontraste un error? Reportar problema →
Como contrapartida de eventually, continually te permite verificar que un bloque de código se ejecuta correctamente y sigue haciéndolo durante un período de tiempo.
Por ejemplo, podrías necesitar comprobar que una conexión HTTP se mantiene activa durante 60 segundos después de recibir el último paquete.
Podrías esperar 60 segundos y luego comprobar, pero si la conexión se cortó a los 5 segundos, tu prueba permanecerá inactiva 55 segundos adicionales antes de fallar.
Mejor fallar rápido.
class MyTests : ShouldSpec() {
init {
should("pass for 60 seconds") {
continually(60.seconds) {
// code here that should succeed and continue to succeed for 60 seconds
}
}
}
}
Por defecto, la función pasada al bloque continually se ejecuta cada 25 milisegundos. Podemos establecer explícitamente el intervalo de sondeo. En el siguiente ejemplo lo configuramos a 50 milisegundos:
class MyTests: ShouldSpec() {
init {
should("pass for 60 seconds") {
val config = continuallyConfig<Unit> {
duration = 60.seconds
interval = 50.milliseconds
}
continually(config) {
// code here that should succeed and continue to succeed for 60 seconds
}
}
}
}
Escuchadores
Si necesitamos registrar las ejecuciones exitosas del block(), podemos usar un escuchador como se muestra en el siguiente ejemplo:
var invoked = 0
val executed = mutableMapOf<Int, Int>()
val config = continuallyConfig<Int> {
duration = 500.milliseconds
listener = { index, value -> executed[index] = value }
}
val result = testContinually(config) {
invoked*2 shouldBe 2*invoked
invoked++ + 42
}
assertSoftly {
executed.keys.shouldHaveSize(20)
executed.forEach { (k, v) ->
v shouldBe k + 42
}
}