【发布时间】:2013-03-14 18:55:01
【问题描述】:
我在使用 NSubstitute 时遇到问题。 我有这个短代码:
ReportingCycleDeliveryRepository
.When(f => f.Add(Arg.Any<ReportingCycleDelivery>()))
.Do(x => RepCycleDeliveries.Add((ReportingCycleDelivery)x[0]));
因此,当使用任何 ReportingCycleDelivery 参数调用我的 (void) 方法 ReportingCycleDeliveryRepository.Add() 时,它应该将此项目添加到我的 RepCycleDeliveries 列表中。
但相反,它会引发异常:
NSubstitute.Exceptions.AmbiguousArgumentsException
“无法确定要使用的参数规范。 请对相同类型的所有参数使用规范。”
这是为什么呢?为什么 NSubstitute 不能确定要使用的正确参数规范?我清楚地提供了一个提示,参数可以是任何ReportingCycleDelivery 项目。
【问题讨论】:
-
Add 方法会不会有重载?
-
嗯,我的 ReportingCycleDeliveryRepository.Add() 方法是一个泛型类型: void Add
(T entity) where T : class;我想你是对的。有解决办法吗? -
不,泛型应该不是问题。我的意思是如果有额外的 Add 重载采用一些更通用的参数。但我猜不是:)
标签: c# mocking nsubstitute