Las pruebas que esperan en tiempo real son lentas y pueden fallar bajo carga. Un reloj controlable hace que el comportamiento basado en el tiempo sea repetible, pero los temporizadores falsos deben limitarse al código que realmente utiliza un temporizador.

Haz del reloj una dependencia

  • Pase un reloj o un programador a un código que posea una fecha límite, un rebote o un intervalo de sondeo.
  • Adelantar el tiempo falso deliberadamente y esperar la promesa resultante o la actualización del estado.
  • Restaure los temporizadores reales después de cada prueba para que una prueba no pueda alterar el entorno de otra.
clock.advanceBy(500);
await expect(result).resolves.toEqual(expected);

Prueba el límite, no un sueño

Evite retrasos fijos, como esperar 500 milisegundos para que finalice una solicitud. Espere una condición observable específica y pruebe los casos de fecha límite justo antes, en y justo después cuando esos límites sean importantes.

Si los temporizadores falsos bloquean una prueba, inspeccione la cola de temporizadores y promesas pendientes. Combinar tiempo simulado con bibliotecas que programan su propio trabajo puede exponer un problema de configuración en lugar de un error del producto.