วิธีการของคุณไม่ได้มีการเรียกกลับใด ๆ .CallBack()
ดังนั้นจึงไม่มีเหตุผลที่จะใช้ไม่ได้ คุณสามารถคืนภารกิจด้วยค่าที่ต้องการโดยใช้.Returns()
และTask.FromResultเช่น:
MyType someValue=...;
mock.Setup(arg=>arg.DoSomethingAsync())
.Returns(Task.FromResult(someValue));
อัปเดต 2014-06-22
Moq 4.2 มีวิธีการขยายสองวิธีใหม่เพื่อช่วยในเรื่องนี้
mock.Setup(arg=>arg.DoSomethingAsync())
.ReturnsAsync(someValue);
mock.Setup(arg=>arg.DoSomethingAsync())
.ThrowsAsync(new InvalidOperationException());
อัพเดท 2016-05-05
ในฐานะที่เป็นเซทดอกไม้กล่าวถึงในคำตอบอื่น ๆ , จะใช้ได้เฉพาะวิธีการที่ผลตอบแทนReturnsAsync
Task<T>
สำหรับวิธีการที่คืนค่าเฉพาะภารกิจ
.Returns(Task.FromResult(default(object)))
สามารถใช้ได้.
ดังที่แสดงในคำตอบนี้ใน. NET 4.6 จะทำให้ง่าย.Returns(Task.CompletedTask);
ขึ้นเช่น:
mock.Setup(arg=>arg.DoSomethingAsync())
.Returns(Task.CompletedTask);