Les tests qui attendent en temps réel sont lents et peuvent échouer sous charge. Une horloge contrôlable rend reproductible un comportement basé sur le temps, mais les faux minuteurs devraient être limités au code qui utilise réellement un minuteur.

Faire de l'horloge une dépendance

  • Transmettez une horloge ou un planificateur dans un code qui possède une date limite, un anti-rebond ou un intervalle d'interrogation.
  • Avancez délibérément le faux temps et attendez la promesse ou la mise à jour de l’état qui en résulte.
  • Restaurez les minuteries réelles après chaque test afin qu'un test ne puisse pas modifier l'environnement d'un autre.
clock.advanceBy(500);
await expect(result).resolves.toEqual(expected);

Testez la limite, pas un sommeil

Évitez les délais fixes tels que l'attente de 500 millisecondes pour qu'une requête se termine. Attendez une condition observable spécifique et testez les cas juste avant, juste avant et juste après la date limite lorsque ces limites sont importantes.

Si de fausses minuteries bloquent un test, inspectez la file d'attente des minuteries et des promesses en attente. Mélanger du temps simulé avec des bibliothèques qui planifient leur propre travail peut exposer un problème de configuration plutôt qu'un bug du produit.