【发布时间】:2015-02-05 10:23:44
【问题描述】:
所以,我正在为我的项目编写单元测试用例。我被困在一个有 ref 参数的函数调用的地方。示例:-
public decimal addToSubtractFromCheckAmount(decimal dChkAmt,ref ICharge oCharge, bool blnAddTo, bool blnIncludeRBL)
我正在编写一个调用上述函数 (addToSubtractFromCheckAmount) 的函数的测试用例,我想跳过它并提供我的自定义返回值。
** 使用(ShimsContext.Create())
ShimClassName.AllInstances.addToSubtractFromCheckAmountDecimalIChargeBooleanBoolean
= (a, b, c, d, e) => new decimal(20);
** 这在我不传递 ref 参数时有效,但是当我给 ICharge 接口一个 ref 关键字时,该函数从我的单元测试用例类元数据中消失,并且当我构建项目时出现此错误 **
错误 101 Service.Fakes.ShimClassName.AllInstances' 不包含 定义为 'addToSubtractFromCheckAmountDecimalIChargeBooleanBoolean'
** 许多网站都在谈论具有字符串 ref 参数的 SHIMMING 函数,而不是接口、集合等。 例如
https://stackoverflow.com/questions/26918525/using-microsoft-fakes-to-shim-a-method-with-generic-list-parameters 这家伙的函数有 ref 参数,他是怎么拿到 AllInstances 里的函数的。
我在这个问题上停留了一段时间。有人可以帮忙吗?如果你们需要更多信息,请告诉我,谢谢。
【问题讨论】:
-
方法名是驼峰式的。这是不好的做法。建议遵循 c# 代码约定。
-
没关系,我在我的主要项目中遵循正确的编码实践。这只是测试项目中的一个测试用例。
标签: c# unit-testing ref microsoft-fakes shim