Я пытаюсь работать, если это то, что я делаю неправильно, или его проблема в moq или NUnit. Я вызываю конечную точку мыла, и моя служебная ссылка генерирует как синхронные, так и асинхронные методы. Вызов творю, выглядит примерно так:Ошибка обратного вызова Moq Async с несколькими параметрами
public async Task DoThisAsync(idnameobject myobj, int id)
{
await ws.DoSomethingAsync(myobj, id);
}
Я настраиваю мой MOQ вернуть обратный вызов, так что я могу interegate параметров, которые я назвал веб-сервис с. Мой тест выглядит примерно так:
var callback = new idnameobject();
wsMock
.SetUp(w => w.DoSomethingAsync(It.IsAny<idnameobject>(), It.IsAny<int>())
.Callback<idnameobject, int>((obj, id) => callback = obj);
await myservice.DoThisAsync(myobj, id);
Assert.That(callback.Id, Is.EqualTo(myobj.Id));
На данный момент, я получаю пустую ссылку исключение при вызове моего метода, который не содержит какой-либо информации в трассировке стека. Все, что у меня есть, - Exception thrown: 'System.AggregateException' in mscorlib.dll
.
Бит, который является странным, заключается в том, что он не сработает, если я настрою обратный вызов синхронного метода и измените свой метод на вызов.
Он также не работает, если я вызываю метод async, который имеет только один параметр.
Если у кого-нибудь есть идеи, сообщите мне, потому что я не хочу менять свой метод из-за наших тестов, но в идеале я хочу, чтобы мой тест обеспечил правильное обращение к веб-сервису.
Отличное объяснение и исправлены проблемы. Хотел бы я отметить это как ответ для вас. – mikesigs
Извините, это ответило на мой вопрос, немного замедлив отметить его как таковой – Tom