¿Cómo puedo verificar que se haya llamado exactamente a un método una vez con Moq? La cosa Verify()
contra Verifable()
es realmente confusa.¿Cómo puedo verificar que se haya llamado exactamente a un método una vez con Moq?
74
A
Respuesta
112
Puede utilizar Times.Once()
o Times.Exactly(1)
:
mockContext.Verify(x => x.SaveChanges(), Times.Once());
mockContext.Verify(x => x.SaveChanges(), Times.Exactly(1));
Éstos son los métodos de la clase Times:
AtLeast
- Especifica que un método burlado debe invocarse veces veces como mínimo.AtLeastOnce
- Especifica que se debe invocar un método simulado una vez como mínimo.AtMost
- Especifica que se debe invocar un método simulado multiplicado por el tiempo como máximo.AtMostOnce
- Especifica que un método simulado debe invocarse una vez como máximo.Between
: especifica que se debe invocar un método simulado entre las horas desde y hacia.Exactly
- Especifica que se debe invocar un método simulado exactamente veces.Never
: especifica que no se debe invocar un método simulado.Once
: especifica que se debe invocar un método simulado exactamente una vez.
Solo recuerde que se trata de llamadas a métodos; Seguí tropezando, pensando que eran propiedades y olvidando los paréntesis.
0
controlador de prueba puede ser:
public HttpResponseMessage DeleteCars(HttpRequestMessage request, int id)
{
Car item = _service.Get(id);
if (item == null)
{
return request.CreateResponse(HttpStatusCode.NotFound);
}
_service.Remove(id);
return request.CreateResponse(HttpStatusCode.OK);
}
Y Cuando método DeleteCars llamada con identificación válida, entonces podemos comprobar que, método de servicio de eliminación llamada exactamente una vez por esta prueba:
[TestMethod]
public void Delete_WhenInvokedWithValidId_ShouldBeCalledRevomeOnce()
{
//arange
const int carid = 10;
var car = new Car() { Id = carid, Year = 2001, Model = "TTT", Make = "CAR 1", Price=2000 };
mockCarService.Setup(x => x.Get(It.IsAny<int>())).Returns(car);
var httpRequestMessage = new HttpRequestMessage();
httpRequestMessage.Properties[HttpPropertyKeys.HttpConfigurationKey] = new HttpConfiguration();
//act
var result = carController.DeleteCar(httpRequestMessage, vechileId);
//assert
mockCarService.Verify(x => x.Remove(carid), Times.Exactly(1));
}
Cuestiones relacionadas
- 1. Cómo verificar que se haya utilizado otro método de la clase con Moq
- 2. ¿Cómo verificar que NO se invocó ese método en Moq?
- 3. verificar el método ha sido llamado con IEnumerable que contiene elementos de 'x' con Moq
- 4. Afirmando que un método se llama exactamente una vez
- 5. ¿Cómo se usa moq para verificar que se haya pasado un objeto similar como argumento?
- 6. Verificando que un delegado fue llamado con Moq
- 7. Rhinomocks, ¿cómo verificar que nunca se haya llamado un stub/mock?
- 8. Rhino Mocks: Cómo verificar que un método se llamó exactamente una vez usando vb.net y la sintaxis AAA
- 9. ¿Cómo puedo afirmar/verificar un método protegido de Moq?
- 10. Verificar una llamada a un método usando Moq
- 11. Moq - Cómo verificar que un valor de la propiedad se establece a través de la incubadora
- 12. ¿cómo puedo verificar que un SqlDataSource haya devuelto datos?
- 13. Usando Mockito, ¿cómo verifico que un método fue llamado con un cierto argumento?
- 14. Verificar el número de veces que se llama a un método protegido usando Moq
- 15. ¿Cómo verificar que haya una transacción que aún no se haya comprometido en SQL Server 2005?
- 16. ¿Puedo usar Moq para verificar que se invocó un método falso con valores específicos en un parámetro complejo?
- 17. Moq - Usar VerifySet para verificar el número de veces llamado
- 18. Cómo verificar varias llamadas a métodos con Moq
- 19. jQuery AJAX solicita un error en IE8 con el mensaje 'Error: no se puede llamar a este método hasta que se haya llamado al método abierto.'
- 20. Verificar que se haya cargado el script externo
- 21. ¿Cómo verificar que se haya enviado un correo cuando se usa Zend_Mail?
- 22. Cómo hacer que Mock devuelva una nueva lista cada vez que se llama al método usando Moq
- 23. Verificar que la apk de Android no se haya reempaquetado.
- 24. Rspec: ¿cómo puedo verificar si se llama a una llamada a un método de otra clase?
- 25. ¿Cómo puedo usar OCMock para verificar que nunca se llame a un método?
- 26. Cómo obtener la URL original después de que se haya llamado a HttpContext.RewritePath()
- 27. moq - cómo se ha verificado el método no se ha llamado si la clase se traga excepciones
- 28. Hay una manera en .NET de llamar automáticamente a un método después de que se haya invocado otro método, pero antes de que se haya ingresado
- 29. ¿Es posible eliminar un encabezado de respuesta Pragma sin caché una vez que se haya establecido mediante el método SetCacheability?
- 30. ¿Cómo restringir a una llamada de método a la vez?
Entonces, ¿cómo usted obtiene/configura el mockContext? – Choco