2 votes

NUnit - Tester qu'une méthode a été appelée

Comment puis-je tester le code suivant ?

public void CreateRentalIfNecessary(int? rentalId)
{
  if (rentalId.HasValue) { CreateRental(rentalId.Value); }
}

J'ai besoin d'écrire un test unitaire simple pour vérifier que CreateRental est appelé lorsque le rentalId n'est pas null . Comment puis-je tester cela ?

Alors la réponse ici semble bien trop compliquée : Comment déterminer si une méthode a été appelée en utilisant nunit ?

3voto

Charlie Points 201

En prenant l'exemple au pied de la lettre, vous essayez de tester simultanément deux méthodes du même objet, CreateRentalIfNecessary y CreateRental . Comme ils sont tous deux dans le même objet, vous ne pouvez pas utiliser un simulateur. Cela me conduit à plusieurs conclusions alternatives...

  1. L'une des méthodes peut être inutile. Voulez-vous vraiment créer une méthode alors qu'elle est no nécessaire ? Peut-être pouvez-vous simplement supprimer la variante ...IfNecessary et toujours vérifier la nécessité dans les cas suivants CreateRental . La possibilité de le faire dépend bien sûr de la façon dont les méthodes sont appelées.

  2. Comme variante, il suffit de demander aux clients de faire le test pour voir si l'appel est nécessaire.

  3. Si les deux sont vraiment nécessaire, je suppose que vous testez CreateRental . Dans ce cas, vous devriez pouvoir réutiliser les mêmes cas de test pour CreateRentalIfNeeded .

Ma préférence irait à quelque chose comme (1). Il est possible que vos tests vous disent de refactoriser le SUT.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X