2010-11-17 10 views

Antwort

112

können Sie verwenden Times.Once() oder Times.Exactly(1):

mockContext.Verify(x => x.SaveChanges(), Times.Once()); 
mockContext.Verify(x => x.SaveChanges(), Times.Exactly(1)); 

Hier sind die Methoden auf der Times Klasse:

  • AtLeast - Gibt an, dass ein verspottet Methode Zeitmal als Minimum aufgerufen werden soll.
  • AtLeastOnce - Gibt an, dass eine verspottete Methode mindestens einmal aufgerufen werden soll.
  • AtMost - Gibt an, dass eine verspätete Methode als maximale Zeit aufgerufen werden soll.
  • AtMostOnce - Gibt an, dass eine verspätete Methode maximal einmal aufgerufen werden soll.
  • Between - Gibt an, dass eine gespottete Methode zwischen "from" und "to" aufgerufen werden soll.
  • Exactly - Gibt an, dass eine verspottete Methode genau mal aufgerufen werden soll.
  • Never - Gibt an, dass eine verspätete Methode nicht aufgerufen werden soll.
  • Once - Gibt an, dass eine verspätete Methode genau einmal aufgerufen werden soll.

Denken Sie daran, dass es Methodenaufrufe sind; Ich stolperte immer wieder, dachte, sie wären Eigentum und vergaß die Klammern.

+0

so wie zu tun Sie erhalten/setup den MockContext? – Choco

0

Test-Controller kann sein:

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); 
    } 

Und wenn DeleteCars Methode mit gültiger ID genannt, dann können wir das überprüfen, Service-remove-Methode genau einmal durch diesen Test genannt:

[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)); 
    } 
Verwandte Themen