C# Typemock伪集合处理
鉴于上面的代码,我将如何使用类型mock将信息输入IEnumerable,以便能够对梁、框架和墙使用赝品 这是一本字典 executionContext的类型为TooLongContextC# 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
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);