Je comprends la nécessité de tester une classe qui a de la logique (par exemple, celle qui peut calculer des remises), où vous pouvez tester la réelle classe.Pourquoi est-ce que j'écrirais une fausse classe et que l'unité la testerait?
Mais je viens de commencer à écrire des tests unitaires pour un projet qui servira de référentiel (obtenir des objets à partir d'une base de données). Je me retrouve à écrire un 'faux' référentiel qui implémente une interface ISomethingRepository
. Il utilise un Dictionary<Guid, Something>
pour le stockage interne. Il implémente les méthodes Add(Something)
et GetById(Guid)
de l'interface.
Pourquoi est-ce que j'écris ceci? Rien de ce que j'écris ne sera réellement utilisé par le logiciel quand il sera déployé, n'est-ce pas? Je ne vois pas vraiment la valeur de cet exercice.
J'ai également reçu le conseil d'utiliser un objet fantaisie que je peux configurer à l'avance pour répondre à certaines attentes. Cela me semble encore plus inutile: bien sûr, le test va réussir, je me suis moqué/truqué pour réussir! Et je suis toujours pas sûr que le logiciel lui-même fonctionnera comme il se doit lors de la connexion à la base de données ...
confus ...
me point que quelqu'un peut dans la bonne direction pour me aider à comprendre ce ?
Merci!
Je suis upvoting ceci, parce que c'est quelque chose qui me irrite souvent. Les défenseurs les plus rapides de TDD ont tendance à tomber dans ce accident, et finissent par tester des scénarios/codes qui ne se produisent pas dans la réalité. – FlySwat