Gérer le temps… à plusieurs reprises dans la création d’application la gestion mais surtout le contrôle du temps devient important. Par exemple, un système d’enregistrement avec expiration… ou une offre avec date de début et de fin. Traditionnellement on changerait, à travers le code ou encore directement sur le poste de travail ou le serveur, l’heure et la date de la machine. En Ruby, grace à la capacité de redéfinition d’objets et de classes on peut simplifier et automatiser le processus… jusqu’à geler le temps… De cette façon il devient possible dans les tests unitaires automatisés de vérifier si le code se comporte correctement à une date précise, si les délais d’expirations et autres calculs sont correctes, et ce, sans avoir à changer l’heure sur l’horloge de son ordinateur. J’ai découvert cette méthode simple en étudiant la suite de tests unitaires pour un des engins de Ruby on Rails. Le code de base permet d’avancer et reculer le temps. Le code original provient du Login Engine. Je l’ai amélioré pour fournir un temps constant La classe Time fournit l’heure et la date pour beaucoup de code en Ruby, le principe est qu’en réécrivant la méthode now on peut jouer avec le temps comme on veut. Voici le code:
Liens discutés dans ce blogue
- Login Engine – La référence pour le code en example
- méthode Alias – La syntax pour la méthode alias {anglais}