[英]NSubstitute cannot setup return value (CouldNotSetReturnException)
我有一个接口(称为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
关键字有关。)
因此,在这里简化堆栈溢出可能会给您带来麻烦。
列表MyCustomReturnList
实际上是静态类中包含的列表。 由于将列表作为返回值传递并不会实际影响类,因此未调用静态构造函数(用于设置列表)。
以某种方式(不太确定细节),对尚未设置的列表进行“引用”是为了使NSubstitute无法设置返回值(可能是因为它未初始化)。
NSubstitute可以做得更好的唯一事情是一条不同的错误消息。 但是错误出在我的代码中,而不是NSubstitute。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.