2010-11-17 24 views

Trả lời

112

Bạn có thể sử dụng Times.Once(), hoặc Times.Exactly(1):

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

Sau đây là các phương pháp trên lớp Times:

  • AtLeast - Chỉ định rằng một phương pháp chế giễu nên được gọi lần lần mức tối thiểu.
  • AtLeastOnce - Chỉ định rằng phương thức giả phải được gọi một lần tối thiểu.
  • AtMost - Chỉ định rằng phương thức giả mạo phải được gọi lần theo thời gian tối đa.
  • AtMostOnce - Chỉ định rằng phương thức giả mạo phải được gọi một lần tối đa.
  • Between - Chỉ định rằng phương thức giả mạo phải được gọi giữa từ và đến lần.
  • Exactly - Chỉ định rằng phương thức giả mạo phải được gọi chính xác lần.
  • Never - Chỉ định rằng không nên gọi phương thức giả.
  • Once - Chỉ định rằng phương thức giả mạo sẽ được gọi chính xác một lần.

Chỉ cần nhớ rằng đó là các cuộc gọi phương thức; Tôi tiếp tục bị vấp ngã, nghĩ rằng họ là tài sản và quên đi những dấu ngoặc đơn.

+0

vậy làm thế nào làm bạn nhận được/thiết lập mockContext? – Choco

0

điều khiển thử nghiệm có thể là:

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

Và Khi DeleteCars phương pháp gọi với id hợp lệ, sau đó chúng ta có thể xác minh rằng, phương pháp Dịch vụ remove gọi chính xác một lúc bằng cách kiểm tra này:

[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)); 
    } 
Các vấn đề liên quan