NSubstitute不能设置返回值(couldnotsetreturexception)



我有一个接口(称为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。

相关内容

  • 没有找到相关文章

最新更新