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

上記のコードを考えると、梁、フレーム、壁にも偽物を使用できるように、型モックを使用して 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 で何も返されないようにするだけです (通常はすべてのデフォルト値を返すことによって)。これは 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 に答える