2010-07-05 14 views

Respuesta

7

método de instalación se utiliza para establecer las expectativas sobre el objeto de burla Por ejemplo:

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

Aquí está configurando el método DoSomething en objeto de burla. Usted dice que cuando el parámetro es "ping", el método devuelve verdadero.

Ahora, este objeto puede actuar como un simulacro o un trozo en función de su uso. Si desea usarlo en pruebas basadas en estado, puede actuar como un stub. Si desea usarlo en pruebas basadas en el comportamiento, puede actuar como un simulacro. En las pruebas de comportamiento, se le llamará al método verificar en el objeto de burla para afirmar que el método fue llamado con el parámetro "ping"

adicionales se refieren estos enlaces:

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

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

32

El el comportamiento predeterminado de un objeto Moq Mock es un trozo de todos los métodos y propiedades. Esto significa que una llamada a ese método/propiedad con cualquier parámetro no fallará y devolverá un valor predeterminado para el tipo de devolución en particular.

se llama a Setup método para cualquiera o todas de las siguientes razones:

  • desea restringir los valores de entrada para el método.
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 configuración anterior hará coincidir con una llamada al método Sum con cualquier valor de val1 y val2 valor de 3.

  • Usted desea devolver un valor específico. Continuando con ICalculator ejemplo, la siguiente configuración devolverá un valor de 10, independientemente de los parámetros de entrada:
var mock = new Mock<ICalculator>(); 
mock.Setup(m=>m.Sum(
    It.IsAny<int>(), //Any value 
    It.IsAny<int>() //Any value 
)).Returns(10); 
  • que desea utilizar Mock<T>.VerifyAll() después le configuraciones para verificar que todas las configuraciones anteriores han sido llamados (una vez).
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();  

El código anterior comprueba que Sum se llama dos veces. Una vez con (7,3) y una vez con (5,3).

+1

No me di cuenta de que uno simplemente podía llamar a Setup() más de una vez para configurar múltiples parámetros diferentes, y este es el único lugar donde lo he visto. –

Cuestiones relacionadas