2010-07-05 17 views

risposta

7

viene utilizzato per impostare le aspettative sul oggetto fittizio Ad esempio:

mock.Setup(foo => foo.DoSomething("ping")).Returns(true); 

Qui si sta impostando il metodo DoSomething in oggetto fittizio. Stai dicendo che quando il parametro è "ping", il metodo restituisce true.

Ora questo oggetto può anche fungere da mock o da uno stub a seconda dell'utilizzo. Se si desidera utilizzarlo in test basati sullo stato, può fungere da stub. Se vuoi usarlo nei test basati sul comportamento, può fungere da mock. Nei test comportamento, si chiama il metodo di verifica sul oggetto fittizio di affermare che il metodo è stato chiamato con il parametro "ping"

Ulteriori consultare questi link:

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

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

32

Il il comportamento predefinito di un oggetto Moq Mock consiste nello stub di tutti i metodi e le proprietà. Ciò significa che una chiamata a quel metodo/proprietà con qualsiasi parametro non avrà esito negativo e restituirà un valore predefinito per il particolare tipo di ritorno.

ti chiamano Setup metodo per una o tutte le seguenti ragioni:

  • si desidera limitare i valori di input per il metodo.
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 configurazione sopra corrisponderà una chiamata al metodo Sum con qualsiasi valore per val1 e val2 valore 3.

  • si desidera restituire un valore specifico. Continuando con ICalculator esempio, la seguente configurazione restituirà un valore di 10, indipendentemente dei parametri di ingresso:
var mock = new Mock<ICalculator>(); 
mock.Setup(m=>m.Sum(
    It.IsAny<int>(), //Any value 
    It.IsAny<int>() //Any value 
)).Returns(10); 
  • si desidera utilizzare Mock<T>.VerifyAll() dopo aver messe a punto per verificare che tutte le impostazioni precedenti sono stati chiamati (una volta).
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();  

Il codice precedente verifica che Sum è chiamato due volte. Una volta con (7,3) e una volta con (5,3).

+1

Non mi sono reso conto che si potrebbe semplicemente chiamare Setup() più di una volta per impostare più parametri diversi, e questo è l'unico posto in cui l'ho visto. –

Problemi correlati