2010-07-05 17 views

Répondre

7

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:

http://martinfowler.com/articles/mocksArentStubs.html

http://code.google.com/p/moq/wiki/QuickStart

32

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).

+1

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. –