Metode Anda tidak memiliki panggilan balik sehingga tidak ada alasan untuk menggunakannya .CallBack()
. Anda cukup mengembalikan Tugas dengan menggunakan nilai-nilai yang diinginkan menggunakan .Returns()
dan Task.From , misalnya:
MyType someValue=...;
mock.Setup(arg=>arg.DoSomethingAsync())
.Returns(Task.FromResult(someValue));
Pembaruan 2014-06-22
Moq 4.2 memiliki dua metode ekstensi baru untuk membantu ini
mock.Setup(arg=>arg.DoSomethingAsync())
.ReturnsAsync(someValue);
mock.Setup(arg=>arg.DoSomethingAsync())
.ThrowsAsync(new InvalidOperationException());
Perbarui 2016-05-05
Seperti Seth Bunga menyebutkan dalam jawaban lain , ReturnsAsync
hanya tersedia untuk metode yang mengembalikan a Task<T>
. Untuk metode yang hanya mengembalikan Tugas,
.Returns(Task.FromResult(default(object)))
dapat digunakan.
Seperti yang ditunjukkan dalam jawaban ini , dalam. NET 4.6 ini disederhanakan menjadi .Returns(Task.CompletedTask);
, misalnya:
mock.Setup(arg=>arg.DoSomethingAsync())
.Returns(Task.CompletedTask);