J'apprends le développement piloté par les tests et j'essaie d'utiliser la bibliothèque Moq pour la simulation. Quel est le but de la méthode d'installation de la classe Mock?Objets factices - Méthode d'installation - Développement piloté par les tests
Répondre
méthode de configuration permet de définir les attentes sur l'objet simulé Par exemple:
mock.Setup(foo => foo.DoSomething("ping")).Returns(true);
Vous définissez la méthode DoSomething
sur l'objet simulé. Vous dites, lorsque le paramètre est "ping", la méthode renvoie true.
Maintenant, cet objet peut également agir comme un simulacre ou un bout en fonction de votre utilisation. Si vous voulez l'utiliser dans un test basé sur l'état, il peut servir de bout. Si vous voulez l'utiliser dans un test basé sur le comportement, il peut agir comme un simulacre. Dans les tests de comportement, vous appellerez verify méthode sur l'objet simulé pour affirmer que la méthode a été appelée avec le paramètre « ping »
se réfèrent en outre ces liens:
Le comportement par défaut d'un objet Moq Mock
consiste à tronquer toutes les méthodes et propriétés. Cela signifie qu'un appel à cette méthode/propriété avec des paramètres n'échouera pas et retournera une valeur par défaut pour le type de retour particulier.
Vous appelez la méthode Setup
pour tout ou partie des raisons suivantes:
- Vous voulez limiter les valeurs d'entrée à la méthode.
public interface ICalculator {
int Sum(int val1, val2);
}
var mock = new Mock<ICalculator>();
mock.Setup(m=>m.Sum(
It.IsAny<int>(), //Any value
3 //value of 3
));
La configuration ci-dessus correspondra un appel à la méthode Sum
avec une valeur pour val1
et val2
valeur de 3.
- Vous voulez retourner une valeur spécifique. En continuant avec
ICalculator
exemple, la configuration suivante renvoie une valeur de 10 quels que soient les paramètres d'entrée:
var mock = new Mock<ICalculator>();
mock.Setup(m=>m.Sum(
It.IsAny<int>(), //Any value
It.IsAny<int>() //Any value
)).Returns(10);
- Vous voulez utiliser
Mock<T>.VerifyAll()
après vous des configurations pour vérifier que toutes les configurations précédentes ont été appelés (une fois que).
var mock = new Mock<ICalculator>();
mock.Setup(m=>m.Sum(
7, //value of 7
3 //value of 3
));
mock.Setup(m=>m.Sum(
5, //value of 5
3 //value of 3
));
mock.VerifyAll();
Le code ci-dessus vérifie que Sum
est appelé deux fois. Une fois avec (7,3)
et une fois avec (5,3)
.
Je ne savais pas que l'on pouvait simplement appeler Setup() plus d'une fois pour configurer plusieurs paramètres différents, et c'est le seul endroit où je l'ai vu. –