Làm cách nào để xác minh phương thức được gọi chính xác một lần bằng Moq? Điều Verify()
và Verifable()
thực sự khó hiểu.Làm cách nào để xác minh một phương thức được gọi chính xác một lần bằng Moq?
74
A
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
đ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
- 1. Xác minh phương thức được gọi là
- 2. Làm cách nào để xác minh phương thức đó KHÔNG được gọi trong Moq?
- 3. Xác minh một đại biểu đã được gọi với Moq
- 4. Xác nhận rằng một phương thức được gọi chính xác một lần
- 5. Xác minh cuộc gọi phương thức bằng cách sử dụng Moq
- 6. Sử dụng Mockito, làm cách nào để xác minh một phương thức được gọi với một đối số nhất định?
- 7. Thiết lập moq và xác minh rằng phương thức được gọi là
- 8. Làm cách nào tôi có thể khẳng định/xác minh Phương thức được bảo vệ bằng Moq?
- 9. Làm cách nào để xác định phương thức nào được gọi trong phương thức?
- 10. Moq - xác minh rằng không có phương pháp được gọi là
- 11. Xác minh phương pháp chung được gọi là sử dụng Moq
- 12. Xác minh thông số cụ thể bằng Moq
- 13. Xác minh Moq lồng nhau
- 14. Xác nhận một hàm/phương thức không được gọi bằng cách sử dụng Mock
- 15. Sử dụng Moq để xác minh các cuộc gọi được thực hiện theo đúng thứ tự
- 16. Sử dụng Mockito để xác minh rằng không có gì được gọi sau phương thức
- 17. Làm cách nào để xác định chính xác cách viết hoa chính xác cho một từ?
- 18. MOQ - xác minh ngoại lệ đã được ném
- 19. Moq cách xác định một phương pháp được gọi với một danh sách có chứa giá trị nhất định
- 20. Xác minh giá trị tham số tham chiếu với Moq
- 21. Có cách nào để xác định một phương thức được kế thừa bằng Python không?
- 22. Làm cách nào để dừng và tiếp tục một CADisplayLink một cách chính xác?
- 23. Sử dụng Moq để Mock một tham số hàm <unc constructor> và xác minh nó được gọi là hai lần
- 24. IntentService: Làm thế nào để enqueue một cách chính xác?
- 25. Nhạo một cuộc gọi phương thức lớp cơ sở với Moq
- 26. Làm cách nào để gọi một GNU tạo macro được tạo bằng cách xác định?
- 27. Làm thế nào để xác minh xem phương thức được gọi từ một lớp khác với cùng một lớp hay không bởi mockito
- 28. Làm một mảng chính xác bằng
- 29. Làm cách nào để gọi IL2JS chính xác?
- 30. Khung chơi - Scala, Phương thức được xác định hai lần
vậy làm thế nào làm bạn nhận được/thiết lập mockContext? – Choco