Typemock假收集处理

时间:2012-12-27 22:25:40

标签: c# c#-4.0 typemock

foreach (BeamCluster cluster in executionContext.RevitModel.Beams
                                .Where(b => b.Walls.Values
                                                   .Contains(executionContext.Frame.Wall)))
        {

鉴于上面的代码,我将如何使用类型mock将信息输入到IEnumerable中,以便我能够使用伪造的光束,框架和墙壁?

Beams是一本字典。

executionContext的类型为TooLongContext

TooLongContext context = Isolate.Fake.Instance<TooLongContext>(Members.ReturnRecursiveFakes);
Isolate.WhenCalled(() => context.RevitModel.Beams).ReturnRecursiveFake();

在此之后我很困惑(也许我在此之前感到困惑:))

1 个答案:

答案 0 :(得分:0)

您需要先自己创建一个IEnumerable的梁和墙等。 Typemock(和其他模拟框架)不会自动生成有用的数据。当你让它们返回递归假货时,它所要做的只是尝试确保没有任何东西与null一起返回(通常通过返回所有内容的默认值)。这只能防止空引用异常,并且它对许多测试用例都没有用。

所以你需要做的就是改变你的上下文返回的内容。

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

等等其他类型。