NSubstitute不能设置返回值(couldnotsetreturexception)
本文关键字:couldnotsetreturexception 返回值 不能 设置 NSubstitute | 更新日期: 2023-09-27 18:16:16
我有一个接口(称为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。
消息继续警告不要尝试对实际类这样做,但这并不适用于我。
我试着改变我的null
参数是更真实的东西:
ExecuteStoredProcedure<MyCustomReturnType>("", new Tuple<string, object>[]{null})
但这并没有帮助……
任何想法我做错了这个替代品?
(我猜它与params
关键字有关)
所以,这就是简化堆栈溢出可能会给您带来麻烦的地方。
列表MyCustomReturnList
实际上是一个保存在静态类中的列表。由于将列表作为返回值传递并不实际影响类,因此没有调用静态构造函数(它将设置列表)。
不知何故(不太确定细节),对尚未设置的列表进行"引用"是为了使NSubstitute无法设置返回值(可能是因为它没有初始化)。
NSubstitute唯一可以做得更好的就是提供不同的错误消息。但错误是在我的代码,而不是与NSubstitute。