2017-08-25 2 views
1

Je dois tester si la méthode GetKey(object target) a été appelée avec le paramètre spécifié. Je sais que la vérification peut être appelée commeComment configurer/vérifier l'appel de méthode avec le paramètre spécifié

processor.Verify(x => x.GetKey(It.Is<object>(y => y == target))); 

mais comment l'installation devrait-elle ressembler?

processor.Setup(x => x.GetKey(It.Is<object>(y => y == target))); 

ou

processor.Setup(x => x.GetKey(It.IsAny<object>())); 

Quelle est la différence entre ces 2 configurations? Est-ce vraiment important dans ce cas?

L'interface de processeur:

public interface ILayoutProcessor 
{ 
    object GetKey(object target); 
} 
+0

Comment la signature complète de la méthode 'GetKey' ressembler? Cela retourne quelque chose? Les deux configurations sont différentes, la première est spécifique à 'target' où la seconde est pour tout' object'. – dee

+0

Je connais la différence entre 'It.Is' et' It.IsAny'. Si je voudrais utiliser différents 'Callback' ou' Return' base sur le paramètre je voudrais utiliser 'It.Is', mais au cas où je ne me soucie pas de la valeur retournée, puis-je utiliser' It.IsAny' dans 'Setup' et 'It.Is' dans' Verify'? –

+1

Oui, je pense que vous pouvez. – dee

Répondre

1

suffit de passer le paramètre spécifié dans l'expression de la méthode Setup ou Verify

processor.Setup(x => x.GetKey(target)).Verifiable(); 

et vérifier ensuite

processor.Verify(); 

ou

processor.Verify(x => x.GetKey(target), Times.AtLeastOnce); 
1
processor.Setup(x => x.GetKey(It.Is<object>(y => y == target))); 

Est une configuration pour quand la méthode est appelée avec un objet correspondant à la condition spécifiée.

processor.Setup(x => x.GetKey(It.IsAny<object>())); 

est une configuration qui correspond à aucun argument objet.

Dans votre cas, où vous voulez uniquement vérifier que la méthode a été appelée avec un certain argument, peu importe la configuration que vous utilisez. En fait, si la valeur de retour de votre fonction n'est pas utilisée, vous n'avez même pas besoin d'une configuration pour pouvoir vérifier. Cependant dans votre cas je suppose que vous faites puisque vous mentionnez Callback et Returns dans les commentaires.

Notez que vous pouvez réduire votre vérification simplement:

processor.Verify(x => x.GetKey(target));