J'essaie de comprendre l'idée de tester les fonctionnalités et de minimiser le nombre d'assertions.Unité testant une méthode de service - comment l'affirmer
permet donc dire que j'ai une telle méthode de service:
public void TransferFunds(int debitedId, int creditedId, Sum funds)
{
Account debited = accountRepository.Get(debitedId);
Account credited = accountRepository.Get(creditedId);
debited.Debit(Sum);
credited.Credit(Sum);
accountRepository.Update(debited);
accountRepository.Update(credited);
}
Mes tests unitaires, je présume devrait alors se scinder en deux, en testant l'octroi de crédits d'un compte et le débit de l'autre. Mais dois-je affirmer sur chaque compte l'état actuel, pour vérifier que la somme a été ajoutée/déduite - ou est-ce un test pour mon modèle de compte? Si oui, que devrais-je affirmer? cette mise à jour a été appelée? Cela ne vérifie pas la fonctionnalité ...
Quelqu'un a une idée?
Danny- Merci pour la réponse rapide! Ainsi, la façon dont vous le voyez ne sera que de 2 assertions: debited.AssertWasCalled (x => x.Debit (sum)); credited.AssertWasCalled (x => x.Credit (somme)); Non affirme le accountRepository (accountRepository.AssertWasCalled (r => r.Update (crédité)), ou pour le débités pour cette matière) Ouais, ça fait du sens :) merci! – nieve
Comme je l'ai dit, je ne suis pas familier avec le langage ou le framework que vous utilisez, mais en Java/jMock, je ferais ce qui suit: * Faire deux comptes fictifs * Faire un faux compteRépertoire * "Autoriser" le AccountRepository pour renvoyer les comptes quand demandé avec les IDs corrects (je ne «aurais pas besoin de ceci parce que ce n'est pas la fonctionnalité que nous essayons de tester) * Affirment que la méthode de débit est appelée sur le premier compte avec la bonne somme * Affirmer que la méthode du crédit est appelée sur le deuxième compte avec la somme de – dty