Câu trả lời của Gamlor có hiệu quả với tôi, nhưng tôi nghĩ rằng tôi sẽ mở rộng nhận xét của John Carpenter vì tôi đang tìm kiếm một giải pháp liên quan đến nhiều hơn một tham số. Tôi cho rằng những người khác vấp ngã trên trang này có thể ở trong một tình huống tương tự. Tôi tìm thấy thông tin này trong tài liệu Moq .
Tôi sẽ sử dụng ví dụ của Gamlor, nhưng hãy giả vờ phương thức AsyncHandle có hai đối số: a string
và một SomeResponse
đối tượng.
var mock = new Mock<Handler>();
string stringResult = string.Empty;
SomeResponse someResponse = null;
mock.Setup(h => h.AsyncHandle(It.IsAny<string>(), It.IsAny<SomeResponse>()))
.Callback<string, SomeResponse>((s, r) =>
{
stringResult = s;
someResponse = r;
});
// do your test
new Foo(mock.Object).Bar(22);
Assert.AreEqual("expected string", stringResult);
Assert.IsNotNull(someResponse);
Về cơ bản, bạn chỉ cần thêm một kiểu khác It.IsAny<>()
với kiểu thích hợp, thêm kiểu khác vào Callback
phương thức và thay đổi biểu thức lambda cho phù hợp.