【问题标题】:moq testing with an asynchronous operation does not work使用异步操作进行最小起订量测试不起作用
【发布时间】:2016-11-07 02:46:55
【问题描述】:

我正在尝试使用异步方法模拟测试,但我不知道如何设置最小起订量测试以允许它。

noSQLProvider.Setup(x => x.CreateDocumentAsync(It.IsIn<Uri>(), It.IsAny<object>())).Returns();

错误告诉我:

用法:ResourceResponse x = await CreatDocumentAsync(...);

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

【问题讨论】:

标签: c# unit-testing asynchronous moq


【解决方案1】:

我猜你正在使用this

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

noSQLProvider.Setup(x => x.CreateDocumentAsync(It.IsIn<Uri>(),
                                               It.IsAny<object>(),
                                               It.IsAny<RequestOptions>(),
                                               It.IsAny<bool>())).Returns();

这是与异步无关的限制。

注意 - 我不确定 It.IsAny 比较对于 null 的行为如何,因此您可能必须将 It.IsAny&lt;RequestOptions&gt;() 替换为明确将该参数设置为 null(这是默认值)的东西。

【讨论】:

  • 既然来了,你知道在.Returns() 位里放什么吗?
  • 无论你想让你的模拟返回什么!
  • 你能举个例子吗
  • @AntP Afaik It.IsAny&lt;type&gt;() 适用于空值,至少它适用于我。
  • @Callum 在您的示例中,您正在模拟 CreateDocumentAsync 方法,因此您的 .Returns 可以返回一个新文档。
猜你喜欢
  • 2020-05-29
  • 2016-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-25
相关资源
最近更新 更多