У вашого методу немає зворотних дзвінків, тому немає ніяких причин використовувати .CallBack()
. Ви можете просто повернути Завдання з потрібними значеннями за допомогою .Returns()
та Task.FromResult , наприклад:
MyType someValue=...;
mock.Setup(arg=>arg.DoSomethingAsync())
.Returns(Task.FromResult(someValue));
Оновлення 2014-06-22
У Moq 4.2 є два нові методи розширення, щоб допомогти у цьому.
mock.Setup(arg=>arg.DoSomethingAsync())
.ReturnsAsync(someValue);
mock.Setup(arg=>arg.DoSomethingAsync())
.ThrowsAsync(new InvalidOperationException());
Оновлення 05.05.2016
Як згадує Сет Квітс в іншій відповіді , ReturnsAsync
доступний лише для методів, які повертають a Task<T>
. Для методів, які повертають лише завдання,
.Returns(Task.FromResult(default(object)))
може бути використано.
Як показано у цій відповіді , у .NET 4.6 це спрощено .Returns(Task.CompletedTask);
, наприклад:
mock.Setup(arg=>arg.DoSomethingAsync())
.Returns(Task.CompletedTask);