Bonjour,
J’ai voulu mettre en pratique la leçon sur les tests.
J’ai une fonction utilitaire qui me calcule un âge à partir d’une date passée en paramètre.
Je ne sais pas comment faire le test, puisque la réponse change tous les jours !
Voici la fonction :
String calculerAge(DateTime dateDeNaissance) {
final DateTime datePresente = DateTime.now();
final age = datePresente.difference(dateDeNaissance).inDays ~/
Constantes.anneeSolaire;
final jours = (datePresente.difference(dateDeNaissance).inDays %
Constantes.anneeSolaire)
.toInt();
return "$age ans, $jours jour(s)";
En faite, ton problème vient de DateTime.now(), donc il faut que tu utilises une des méthodes de la documentation ci-dessous, afin de comparer si tu as le même résultat à la fin.
Alors, on va appliquer la méthode de développement orienté par les tests, c’est-à-dire qu’on commence par les tests et après on code.
Donc, tu crées une fonctionne de test comme celle que tu as faite sans abstractions.
final DateTime datePresente = DateTime.now();
final age = datePresente.difference(2000).inDays ~/
Constantes.anneeSolaire;
final jours = (datePresente.difference(2000).inDays %
Constantes.anneeSolaire)
.toInt();
final resultatString = "$age ans, $jours jour(s)"
Et en dessous, tu ajoutes ton test calculerAge(2000) = resultatString
Tu ne peux pas t’en affranchir, car tu l’utilises dans ta fonctionne. À moins de modifier cette fonctionne en ajoutant un paramètre supplémentaire, afin de permet de passer une date immuable ou muable comme tu le désire.
Sinon, tu es obligé de l’utiliser dans ta fonction de test pour créer les conditions réelles.