4

以前、次のリンクに質問を投稿しました。

ネストされたコレクションを持つクラス - ネストされたクラスにデータを入力するにはどうすればよいですか?

同じことができるようにする必要がありますが、ネストされたクラスを使用します。

そのようです:

public class ParentClass
{
   public int Value;
   public IList<ChildClass> Children;
}

public class ChildClass
{
   etc...
}

私はこれを試しました:

Fixture.Register(()=>Fixture.CreateMany<ChildClass>();

しかし、これは機能していません。何かアイデアはありますか? AutoFixture 2.0 を使用しています。

4

1 に答える 1

4

AutoFixture の AutoProperties 機能は、書き込み可能なプロパティにのみ値を割り当てます。値が設定されていない理由ParentClass.Childrenは、それが読み取り専用のプロパティであるためです。AutoFixture は、これが不可能であることを認識しているため、値を割り当てようとしません。

ただし、ParentClass のインスタンスが既にあると仮定すると、AutoFixture にコレクションを埋めるように要求できます。

fixture.AddManyto(parentClass.Children);

これは、次のようなカスタマイズにカプセル化できます。

fixture.Customize<ParentClass>(c => c.Do(pc => fixture.AddManyTo(pc.Children)));

であるため、 MultipleCustomizationChildrenを使用しない限り、そのためのマッピングも提供する必要がありIList<ChildClass>ます。

fixture.Register<IList<ChildClass>>(() => fixture.CreateMany<ChildClass>().ToList());

これは間違いなく、MultipleCustomization に追加することを検討した動作ですが、実装が完全に簡単ではないことが判明したため、リリース 2.1 以降まで延期することにしました。

于 2011-03-31T16:06:51.780 に答える