Відповідь Гамлора працювала на мене, але я думав, що розширюся на коментар Джона Карпентера, тому що я шукав рішення, що включає більш ніж один параметр. Я зрозумів, що інші люди, які натрапляють на цю сторінку, можуть опинитися в подібній ситуації. Я знайшов цю інформацію в документації Moq .
Я буду використовувати приклад Гамлора, але давайте зробимо вигляд, що метод AsyncHandle бере два аргументи: a string
і SomeResponse
об'єкт.
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);
В основному вам просто потрібно додати інший It.IsAny<>()
відповідним типом, додати інший тип до Callback
методу та змінити вираз лямбда, якщо потрібно.