unitario unitarias unidades son software que pruebas niveles interfaz hacer ejemplo como unit-testing tdd mocking moq

unit-testing - unidades - que son pruebas unitarias java



Objetos simulados-Método de instalación-Test Driven Development (2)

Estoy aprendiendo Test Driven Development y tratando de usar la biblioteca Moq para burlarse. ¿Cuál es el propósito del método de instalación de la clase Mock?


El método de configuración se usa para establecer expectativas en el objeto simulado Por ejemplo:

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

Aquí está configurando el método DoSomething en el objeto simulado. Dice que cuando el parámetro es "ping", el método devuelve verdadero.

Ahora este objeto puede actuar como un simulacro o un talón dependiendo de su uso. Si desea utilizarlo en pruebas basadas en estado, puede actuar como un código auxiliar. Si desea utilizarlo en pruebas basadas en el comportamiento, puede actuar como un simulacro. En las pruebas de comportamiento, llamará al método de verificación en el objeto simulado para afirmar que se llamó al método con el parámetro "ping"

Además refiérase a estos enlaces:

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

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


El comportamiento predeterminado de un objeto Moq Mock es eliminar 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 retorno en particular.

Llama al método de Setup por alguna o todas las razones siguientes:

  • Desea restringir los valores de entrada al 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 una llamada al método Sum con cualquier valor para val1 y val2 valor de 3.

  • Desea devolver un valor específico. Continuando con el ejemplo de ICalculator , 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);

  • Desea utilizar Mock<T>.VerifyAll() después de las configuraciones para verificar que se hayan llamado todas las configuraciones anteriores (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 verifica que Sum se llama dos veces. Una vez con (7,3) y una vez con (5,3) .