Deine Methode hat keine Rückrufe, daher gibt es keinen Grund .CallBack()
zu verwenden. Du kannst einfach eine Aufgabe mit den gewünschten Werten zurückgeben, indem du .Returns()
und Task.FromResult verwendest, z.B.:
MyType someValue=...;
mock.Setup(arg=>arg.DoSomethingAsync())
.Returns(Task.FromResult(someValue));
Update 2014-06-22
Moq 4.2 hat zwei neue Erweiterungsmethoden, um dabei zu helfen.
mock.Setup(arg=>arg.DoSomethingAsync())
.ReturnsAsync(someValue);
mock.Setup(arg=>arg.DoSomethingAsync())
.ThrowsAsync(new InvalidOperationException());
Update 2016-05-05
Wie Seth Flowers im anderen Antwort erwähnt, ist ReturnsAsync
nur für Methoden verfügbar, die ein Task
zurückgeben. Für Methoden, die nur ein Task zurückgeben, kann verwendet werden:
.Returns(Task.FromResult(default(object)))
Wie in dieser Antwort gezeigt, wird dies in .NET 4.6 vereinfacht zu .Returns(Task.CompletedTask);
, z.B.:
mock.Setup(arg=>arg.DoSomethingAsync())
.Returns(Task.CompletedTask);