Phương pháp của bạn không có bất kỳ cuộc gọi lại nào nên không có lý do để sử dụng .CallBack(). Bạn chỉ có thể trả về một Tác vụ với các giá trị mong muốn bằng cách sử dụng .Returns()và Task.FromResult , ví dụ:
MyType someValue=...;
mock.Setup(arg=>arg.DoSomethingAsync())
.Returns(Task.FromResult(someValue));
Cập nhật 2014-06-22
Moq 4.2 có hai phương pháp mở rộng mới để hỗ trợ việc này.
mock.Setup(arg=>arg.DoSomethingAsync())
.ReturnsAsync(someValue);
mock.Setup(arg=>arg.DoSomethingAsync())
.ThrowsAsync(new InvalidOperationException());
Cập nhật 2016-05-05
Như Seth Hoa đề cập trong câu trả lời khác , ReturnsAsyncchỉ có sẵn cho các phương thức trả về a Task<T>. Đối với các phương thức chỉ trả về một Tác vụ,
.Returns(Task.FromResult(default(object)))
có thể được sử dụng.
Như được hiển thị trong câu trả lời này , trong .NET 4.6, điều này được đơn giản hóa .Returns(Task.CompletedTask);, ví dụ:
mock.Setup(arg=>arg.DoSomethingAsync())
.Returns(Task.CompletedTask);