Seu método não possui retornos de chamada, portanto não há motivo para usá-lo .CallBack()
. Você pode simplesmente retornar uma tarefa com os valores desejados usando .Returns()
e Task.FromResult , por exemplo:
MyType someValue=...;
mock.Setup(arg=>arg.DoSomethingAsync())
.Returns(Task.FromResult(someValue));
Atualização 22/06/2014
O Moq 4.2 possui dois novos métodos de extensão para ajudar nisso.
mock.Setup(arg=>arg.DoSomethingAsync())
.ReturnsAsync(someValue);
mock.Setup(arg=>arg.DoSomethingAsync())
.ThrowsAsync(new InvalidOperationException());
Atualização 2016-05-05
Como Seth Flowers menciona na outra resposta , ReturnsAsync
só está disponível para métodos que retornam a Task<T>
. Para métodos que retornam apenas uma tarefa,
.Returns(Task.FromResult(default(object)))
pode ser usado.
Conforme mostrado nesta resposta , no .NET 4.6, isso é simplificado para .Returns(Task.CompletedTask);
, por exemplo:
mock.Setup(arg=>arg.DoSomethingAsync())
.Returns(Task.CompletedTask);