Jest y su comportamiento paralelo

Explico un problema que tuve al ejecutar mis pruebas debido a la ejecución paralela de Jest y cual fue su solución

hace 13 días   •   2 min de lectura

Por Andrés Tuñón

Hace unos días estaba terminando de ejecutar todas mis pruebas unitarias con Jest; pero como cualquier desarrollador, corría las pruebas 1 a 1 para ir debuggeando y que todo funcionara.

Nudo narrativo

De repente ejecuto npm test para revisar que todas las pruebas corrieran y me encuentro con anomalías en mis hooks de beforeEach como escritura y lecturas de Firestore extraños, no lograba entender la razón de ello.

Antes de que cada prueba se ejecute (o sea el beforeEach hook):

  • Inicializo mi proyecto de Firebase para pruebas
  • Se borra las colecciones en Firestore
  • Les crea la estructura y finalmente agrega una data inicial

En otras palabras creo el setup o el estado inicial para comprobar con data limpia y que no tenga afectaciones por las pruebas anteriores.

Desenlace

Pero no me había percatado que al tu ejecutar el comando jest solito, Jest toma un pool de procesos hijos para ejecutar tus pruebas en paralelo y mis pruebas debían ser secuenciales porque tengo un punto común del cual dependo, Firestore y el proyecto de Firebase...

Moraleja

Si vas a hacer integration test o tu estrategia es enfocada a utilizar componentes reales de tu infraestructura (una base de datos en Docker por ejemplo),  debes usar runInBand al probar con jest

De hecho pregunté en stackoverflow y nadie supo xD o no quisieron ayudar e.e!

How to reset firestore unit testing my Cloud Functions with jest
I followed the Cloud Functions recommendation and created my unit testing in online mode, everything makes sense to me, but I am getting inconsistency when I am debugging. I just trying to reset the

 

Corre la voz

Sigue leyendo