Stubbing global de time.Now()
Dans les tests, il devient crucial de contrôler les aspects du code dépendants du temps. Cependant, supprimer time.Now() à l'échelle mondiale peut être difficile en raison de son utilisation généralisée dans plusieurs sections de code.
Approche suggérée : interface de temps personnalisée
L'implémentation actuelle utilisant une interface personnalisée est une solution efficace. Voici un résumé de l'approche :
Alternatives
La modification de l'horloge système pendant les tests est fortement déconseillée car cela peut entraîner des dépendances imprévues.
Limites
Réduire le temps.Now() a globalement ses limites. Par exemple, si le code testé utilise des bibliothèques tierces qui s'appuient sur l'heure système, il se peut qu'il ne soit pas possible de remplacer leur comportement.
Avantages du code sans état
Concevoir du code avec le moins d'état possible simplifie les tests et facilite la concurrence. En séparant les fonctionnalités en composants testables et sans état, il devient plus facile de contrôler les aspects sensibles au temps pendant les tests.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!