Tôi cần phải giả một giao diện để gọi đến MSMQ, có cách nào tôi có thể sử dụng Moq để mô phỏng kịch bản MSMQ thực có 10 tin nhắn trong hàng đợi, tôi gọi mocked chức năng 10 lần và tôi có thể nhận được một đối tượng được xác định trước, vào lần thứ 11 tôi sẽ nhận được một giá trị trả về khác (ví dụ null)?Moq để thiết lập một chức năng trở lại dựa trên thời gian gọi là
Trả lời
Moq hiện nay có một phương pháp mở rộng gọi SetupSequence()
trong không gian tên Moq
có nghĩa là bạn có thể xác định một giá trị trả về khác biệt cho mỗi cuộc gọi cụ thể.
Ý tưởng chung là bạn chỉ cần chuỗi giá trị trả lại bạn cần. Trong ví dụ dưới đây cuộc gọi đầu tiên sẽ trở lại Joe và cuộc gọi thứ hai sẽ trở lại Jane:
customerService
.SetupSequence(s => s.GetCustomerName(It.IsAny<int>()))
.Returns("Joe") //first call
.Returns("Jane"); //second call
Một số biết thêm here.
đôi khi tôi sử dụng một bộ đếm đơn giản cho các kịch bản như:
int callCounter = 0;
var mock = new Mock<IWhatever>();
mock
.Setup(mock => mock.SomeMethod())
.Returns(() =>
{
if (callCounter++ < 10)
{
// do something
}
else
{
// do something else
}
});
Giải pháp tốt. Cũng có thể nối thêm '.CallBack (...)' vào đó dấu ba chấm đại diện cho đại biểu thay đổi 'callCounter' và có thể là trạng thái khác. –
Đây thực sự là một ý tưởng rất tuyệt vời. – hardywang
Bạn cũng có thể thiết lập một chức năng riêng để thực hiện việc này. Bạn thậm chí có thể chuyển hàm tham số nếu bạn muốn:
_serviceMock.Setup(x => x.SomeMethod(It.IsAny<String>())).Returns((String param) => getTimesCalled(param));
- 1. Gọi một chức năng dựa trên một chuỗi có chứa tên chức năng
- 2. Làm cách nào để chính xác thời gian để gọi một chức năng trên iPhone?
- 3. MOQ - thiết lập một phương pháp dựa trên các giá trị tham số (nhiều lý lẽ)
- 4. Giao diện người dùng dựa trên lập trình chức năng
- 5. Thời gian còn lại trên một select() gọi
- 6. Thiết lập Moq để bỏ qua một phương thức ảo
- 7. notification.confirm gọi lại chức năng gọi là luôn luôn
- 8. jaxl trở lại chức năng mà nó được gọi là từ
- 9. Chức năng gọi lại Javascript sẽ báo lỗi "Gọi lại không phải là một chức năng" trong firefox
- 10. Thiết lập moq và xác minh rằng phương thức được gọi là
- 11. Thiết lập kết nối TCP = Cách đo thời gian dựa trên Ping RRT?
- 12. truy vấn trở lại dựa trên ngày
- 13. chức năng gọi lại Viết
- 14. IBrokers reqMktData, cách thêm thời gian chờ vào chức năng gọi lại?
- 15. Tính toán thời gian cần thiết để chạy một chức năng nhất định
- 16. nhiều giá trị trở lại trong chức năng
- 17. Tại sao chức năng vectơ bị vón cục dường như được gọi là thêm thời gian?
- 18. gọi sizeof trên một cuộc gọi bỏ qua chức năng thực sự gọi chức năng!}
- 19. Chức năng gọi lại là gì và cách sử dụng chức năng này với OOP
- 20. Làm thế nào để thiết lập lại giá trị thời gian của setTimeout() trong Javascript?
- 21. Moq: Thiết lập một phương thức giả để thất bại trong lần gọi đầu tiên, thành công trên số
- 22. tối ưu hóa các chức năng cán trên các chuỗi thời gian bất thường với cửa sổ dựa trên thời gian
- 23. Làm thế nào để ngăn chặn gian lận dựa trên thời gian trên một trò chơi mô phỏng dựa trên thời gian?
- 24. "Inlining" (loại) chức năng tại thời gian chạy trong C
- 25. Giá trị biến cài đặt trong Gọi lại Moq() gọi
- 26. Chức năng gọi một cách đệ quy trong khoảng thời gian đều đặn
- 27. Chức năng in python trong thời gian thực
- 28. chức năng gọi trên bộ chọn jquery
- 29. Chức năng gọi lại bình luận
- 30. mocking một phần thời gian lên lớp Moq
Điều này thực sự là những gì tôi đang tìm kiếm :) tuyệt vời. – Silwing
Điều đó thậm chí còn tốt hơn! – hardywang
Có vẻ như liên kết không liên quan:/ – reddy