在您的测试项目中,首先确保添加与被测组件相对应的 Moles 组件。您还需要添加被测组件的using 语句,并附加.Moles,这样您就可以使用被摩尔组件。
Moles 将类和方法的名称更改为M[Original Class Name].[Original Method Name][typeof param1][typeof param2]... 的形式。在您的情况下,该方法的绕行可能看起来像MClass.BuildCustomerUpdatePlanListList = (List x, List y) => { [code]};。这定义了一个匿名方法,它接受两个Lists 作为参数,你可以在函数中放入任何想要的代码。只需确保在该匿名方法中返回 IEnumerable。
这是一个使用 Moles 绕道Directory.GetFiles 的示例:
using System.IO.Moles;
[assembly: MoledType(typeof(System.IO.Directory))]
...
MDirectory.GetFilesStringString = (string x, string y) => new string[0];
由于Directory 类是System.IO 的成员,因此我使用using System.IO.Moles; 来指定我想使用组合的成员。
Moles 要求您指定 Moled 的类型:[assembly: MoledType(typeof(System.IO.Directory))] 完成这项工作。
最后,Directory.GetFiles 将两个字符串作为参数,返回一个字符串数组。为了绕过该方法返回等效于未找到文件,moled 方法只返回new string[0]。如果您希望匿名方法中有多行,则需要大括号,并且如果不绕过 void 方法,则需要与原始方法返回的类型匹配的 return 语句。