Su método no tiene devoluciones de llamada, por lo que no hay razón para usarlo .CallBack()
. Simplemente puede devolver una tarea con los valores deseados usando .Returns()
y Task.FromResult , por ejemplo:
MyType someValue=...;
mock.Setup(arg=>arg.DoSomethingAsync())
.Returns(Task.FromResult(someValue));
Actualización 2014-06-22
Moq 4.2 tiene dos nuevos métodos de extensión para ayudar con esto.
mock.Setup(arg=>arg.DoSomethingAsync())
.ReturnsAsync(someValue);
mock.Setup(arg=>arg.DoSomethingAsync())
.ThrowsAsync(new InvalidOperationException());
Actualizar 2016-05-05
Como Seth Flowers menciona en la otra respuesta , ReturnsAsync
solo está disponible para los métodos que devuelven a Task<T>
. Para los métodos que devuelven solo una tarea,
.Returns(Task.FromResult(default(object)))
puede ser usado.
Como se muestra en esta respuesta , en .NET 4.6 esto se simplifica a .Returns(Task.CompletedTask);
, por ejemplo:
mock.Setup(arg=>arg.DoSomethingAsync())
.Returns(Task.CompletedTask);