您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何告诉Moq返回任务?

如何告诉Moq返回任务?

您的方法没有任何回调,因此没有理由使用.CallBack()。您可以使用.Returns()Task.FromResult简单地返回具有所需值的Task,例如:

MyType someValue=...;
mock.Setup(arg=>arg.DoSomethingAsync())        
    .Returns(Task.FromResult(someValue));

Moq 4.2有两种新的扩展方法可以帮助实现这一点。

mock.Setup(arg=>arg.DoSomethingAsync())
    .ReturnsAsync(someValue);

mock.Setup(arg=>arg.DoSomethingAsync())        
    .ThrowsAsync(new InvalidOperationException());

正如Seth Flowers在另一个答案中提到的那样,ReturnsAsync仅适用于返回a的方法Task<T>。对于仅返回Task的方法

.Returns(Task.FromResult(default(object)))

可以使用。

如此答案所示,在.NET 4.6中,它简化为.Returns(Task.CompletedTask);

mock.Setup(arg=>arg.DoSomethingAsync())        
    .Returns(Task.CompletedTask);
其他 2022/1/1 18:17:57 有467人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶