Ваш метод не имеет обратных вызовов, поэтому нет причин для его использования .CallBack()
. Вы можете просто вернуть Task с нужными значениями, используя .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());
Обновление 2016-05-05
Как упоминает Сет Флауэрс в другом ответе , ReturnsAsync
доступно только для методов, которые возвращают a Task<T>
. Для методов, которые возвращают только Задачу,
.Returns(Task.FromResult(default(object)))
может быть использован.
Как показано в этом ответе , в .NET 4.6 это упрощается .Returns(Task.CompletedTask);
, например:
mock.Setup(arg=>arg.DoSomethingAsync())
.Returns(Task.CompletedTask);