簡體   English   中英

Moq ReturnAsync()沒有參數

[英]Moq ReturnsAsync() with no parameters

我使用起訂量。 我模擬了一個類,該類的方法如下所示:

public async Task DoSomething()
{
    // do something...
}

我將其設置如下:

SomeMock.Setup(x => x.DoSomething())
                .Callback(() => ... ))
                .Returns(Task.FromResult(default(int)));

我不喜歡最后一行: .Returns(Task.FromResult(default(int))) 有沒有一種方法可以以更優雅的方式設置異步返回。 我知道有一個方法ReturnsAsync()但它有一個參數。 我的方法只返回Task所以我沒有ReturnsAsync()的參數。

嘗試執行以下操作:

someMock.Setup(x => x.DoSomething())
   .Callback(() => {})
   .Returns(Task.CompletedTask);

請注意, Task.CompletedTask僅存在於.NET 4.6(最近發布)中或更高版本中。 您可以在 StackOverflow答案中找到更多信息。

當您異步返回值時,可以使用ReturnsAsync 當您僅返回Task ,實際上根本沒有返回任何異步值,因此, ReturnsAsync在這里實際上並不是“合適的”。

如果這不符合您的需求,很遺憾,您將不得不使用Task.FromResult() 據我所知,這實際上是創建“已完成”任務的唯一方法- 除了可能是new Task(() => {}) (盡管這並不是真正的已完成任務,還不止是立即完成的任務)等待時) new Task(() => {})導致死鎖。 使用Task.Run(() => {})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM