C# 异步操作的moq测试不起作用

C# 异步操作的moq测试不起作用,c#,unit-testing,asynchronous,moq,C#,Unit Testing,Asynchronous,Moq,我试图用异步方法模拟测试,但我不知道如何设置moq测试来允许它 noSQLProvider.Setup(x => x.CreateDocumentAsync(It.IsIn<Uri>(), It.IsAny<object>())).Returns(); noSQLProvider.Setup(x=>x.CreateDocumentAsync(It.IsIn(),It.IsAny()).Returns(); 错误告诉我: 用法:ResourceResponse x

我试图用异步方法模拟测试,但我不知道如何设置moq测试来允许它

noSQLProvider.Setup(x => x.CreateDocumentAsync(It.IsIn<Uri>(), It.IsAny<object>())).Returns();
noSQLProvider.Setup(x=>x.CreateDocumentAsync(It.IsIn(),It.IsAny()).Returns();
错误告诉我:

用法:ResourceResponse x=等待同步(…)

表达式树不能包含使用 可选参数

我猜你在用

在这种情况下,错误消息非常清楚地告诉您,该方法具有可选参数,您需要明确说明这些参数:

noSQLProvider.Setup(x => x.CreateDocumentAsync(It.IsIn<Uri>(),
                                               It.IsAny<object>(),
                                               It.IsAny<RequestOptions>(),
                                               It.IsAny<bool>())).Returns();
noSQLProvider.Setup(x=>x.CreateDocumentAsync(It.IsIn()),
It.IsAny(),
It.IsAny(),
It.IsAny()).Returns();
这是一个与异步无关的限制


注意-我不确定
It.IsAny
比较如何处理null,因此您可能必须将
It.IsAny()
替换为显式将该参数设置为null(默认值)。

既然您在这里,您知道在.Returns()位中放什么吗?无论您希望模拟返回什么!你能给我一个电话吗example@AntPAfaik
It.IsAny()
可以很好地处理空值,至少对我来说是这样。@Callum在您的示例中,您正在模拟方法
CreateDocumentSync
,因此您的
.Returns
可以返回一个新文档。可能是