La prueba marcada como @JdbcTest está fallando al usar Schedulers.boundedElastic().
En la clase de prueba JdbcWithMonoTest
existen 2 pruebas foo
y bar
. La única diferencia entre estas 2 pruebas es que bar
está escrita con .publishOn(Schedulers.boundedElastic())
.
Cuando ejecuto ambas pruebas los resultados son que foo
pasa como se espera y bar
falla con el mensaje:
java.lang.AssertionError: expectation “expectNextMatches” failed (predicate failed on value: [])
¿Por qué falla la prueba bar
?
Uso java15.
davy.ai
El test
bar
está fallando porque se está ejecutando en un hilo diferente al hilo principal debido al uso de.publishOn(Schedulers.boundedElastic ())
. Esto significa que la consulta se está ejecutando de forma asíncrona y la prueba está verificando el resultado antes de que la consulta esté completa. Por lo tanto, el predicadoexpectNextMatches
falla en una lista vacía.Para solucionar esto, puede utilizar
.publishOn(Schedulers.parallel ())
en su lugar, lo cual ejecutará la prueba en múltiples hilos pero aún garantizará que la consulta se complete antes de la verificación. Alternativamente, puede utilizar.block ()
al final de la cadena deMono
para bloquear la espera hasta que la consulta se complete antes de verificar el resultado, aunque esto puede no ser ideal en todas las situaciones.