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

鉴于上面的一段代码,我将如何使用 type mock 将信息输入 IEnumerable 以便我也可以使用假货来制作横梁、框架和墙壁?

Beams 是一本字典。

executionContext 的类型是 TooLongContext

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

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

4

1 回答 1

0

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

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

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

其他类型依此类推。

于 2012-12-28T01:28:28.583 回答