Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Typemock伪集合处理_C#_C# 4.0_Typemock - Fatal编程技术网

C# Typemock伪集合处理

C# Typemock伪集合处理,c#,c#-4.0,typemock,C#,C# 4.0,Typemock,鉴于上面的代码,我将如何使用类型mock将信息输入IEnumerable,以便能够对梁、框架和墙使用赝品 这是一本字典 executionContext的类型为TooLongContext foreach (BeamCluster cluster in executionContext.RevitModel.Beams .Where(b => b.Walls.Values

鉴于上面的代码,我将如何使用类型mock将信息输入IEnumerable,以便能够对梁、框架和墙使用赝品

这是一本字典

executionContext的类型为TooLongContext

foreach (BeamCluster cluster in executionContext.RevitModel.Beams
                                .Where(b => b.Walls.Values
                                                   .Contains(executionContext.Frame.Wall)))
        {
TooLongContext context=Isolate.Fake.Instance(Members.ReturnRecursiveFakes);
孤立.WhenCalled(()=>context.RevitModel.Beams).ReturnRecursiveFake();

在此之后,我感到困惑(在此之前,我可能感到困惑:)

您需要首先自己创建梁和墙等的IEnumerable。Typemock(和其他模拟框架)不会自动生成有用的数据。当您让他们返回递归伪代码时,它所做的只是尝试确保不会返回任何带有null的内容(通常是返回所有内容的默认值)。这只会防止null引用异常,对于很多测试用例来说,这并没有多大用处

因此,您需要做的就是更改上下文返回的内容

TooLongContext context = Isolate.Fake.Instance<TooLongContext>(Members.ReturnRecursiveFakes);
Isolate.WhenCalled(() => context.RevitModel.Beams).ReturnRecursiveFake();
var myFakeBeams=new List();
//添加一束假光束
孤立.WhenCalled(()=>context.RevitModel.Beams).WillReturn(myFakeBeams);
其他类型的情况也是如此

var myFakeBeams = new List<Beam>();
//Add a bunch of fake beams
Isolate.WhenCalled(() => context.RevitModel.Beams).WillReturn(myFakeBeams);