Comment puis-je vérifier qu'une méthode a été appelée exactement une fois avec Moq ? La chose Verify()
vs. Verifable()
est vraiment déroutante.
Réponse
Trop de publicités?
sanjeev bhusal
Points
121
Le contrôleur de test peut être :
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);
}
Et quand la méthode DeleteCars a appelé avec un identifiant valide, alors nous pouvons vérifier que, la méthode de suppression de service a appelé exactement une fois par ce test :
[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));
}