【发布时间】:2013-05-30 23:08:12
【问题描述】:
我有一个接口(称为IRepository),上面有这样的方法:
IEnumerable<TEntity> ExecuteStoredProcedure<TEntity>(string functionName,
params Tuple<string, object>[] parameters);
我正在尝试设置通过我的单元测试调用该方法时将返回的内容。像这样:
dataAccess = Substitute.For<IRepository>();
dataAccess.ExecuteStoredProcedure<MyCustomReturnType>(null, null)
.ReturnsForAnyArgs(MyCustomReturnList);
当我运行测试时,我得到了这个异常:
NSubstitute.Exceptions.CouldNotSetReturnException:找不到返回的调用。
该消息继续警告尝试对实际类执行此操作,但这不适用于我。
我尝试将我的 null 参数更改为更真实的东西:
ExecuteStoredProcedure<MyCustomReturnType>("", new Tuple<string, object>[]{null})
但这并没有帮助......
任何想法我用这个替代品做错了什么?
(我的猜测是它与params 关键字有关。)
【问题讨论】:
-
此示例适用于最新的 NSub 版本:gist.github.com/dtchepak/05179a90ad59623b21b3 您能否发布该测试与您的代码之间的任何差异?
-
感谢工作代码。让我意识到在通话之前没有设置我的静态类(保存列表)。 (有关详细信息,请参阅我的答案。)
标签: c# .net unit-testing mocking nsubstitute