无法确定要使用的参数规范

时间:2013-03-14 18:55:02

标签: c# mocking nsubstitute

我遇到了NSubstitute的问题。 我有这个简短的代码:

ReportingCycleDeliveryRepository
.When(f => f.Add(Arg.Any<ReportingCycleDelivery>()))
.Do(x => RepCycleDeliveries.Add((ReportingCycleDelivery)x[0]));

因此,当使用任何ReportingCycleDelivery参数调用my(void)方法ReportingCycleDeliveryRepository.Add()时,它应该将此项添加到我的RepCycleDeliveries列表中。

但相反,它会引发异常:

NSubstitute.Exceptions.AmbiguousArgumentsException

“无法确定要使用的参数规范。 请使用相同类型的所有参数的规范。“

为什么?为什么NSubstitute不能确定使用正确的参数规范?我明确提供了一个提示,参数可以是任何ReportingCycleDelivery项。

1 个答案:

答案 0 :(得分:1)

您应该能够将代码更改为以下代码并按照您希望的方式运行:

ReportingCycleDeliveryRepository
    .When(f => f.Add(Arg.Do<ReportingCycleDelivery>(
        x => RepCycleDeliveries.Add(x[0])));

如果没有看到ReportingCycleDeliveryRepositoryReportingCycleDelivery的代码,很难确切地说出为什么会出现此错误。