es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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.

Tags:  , ,

Answer

  1. Avatar for 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 predicado expectNextMatches 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 de Mono 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.

Comments are closed.