5

「with」メソッドでプロパティを設定すると、同じ名前のネストされたオブジェクトのすべてのプロパティがnullのままになります。

(autofixture の最新バージョンを 3.0.8 として使用しています)

public class Something {
    public string Id { get; set; }
    public IList<Something> Things { get; set; }
}

var obj = Fixture.Build<Something>().With(q => q.Id, "something").CreateAnonymous()

この状況では、obj.Id == "something" は true に等しくなりますが、obj.Things[0].Id == null も true に等しくなります。

バグがあるか、間違っていると思います。誰でも助けてくれる?

4

1 に答える 1

17

デフォルトではSomething、グラフに循環参照が含まれているため、AutoFixture は のインスタンスを作成しません。

あなたができることは、Fixtureインスタンスで適切な動作を追加/削除することです:

fixture.Behaviors.Remove(new ThrowingRecursionBehavior());
fixture.Behaviors.Add(new OmitOnRecursionBehavior());

のインスタンスを作成できるようになりましたSomethingが、Thingsプロパティ (循環参照) は省略されました。

そのため、空のリストが表示されます..

ただし、作成アルゴリズムをさらにカスタマイズできます。

var obj = fixture.Build<Something>()
    .With(x => x.Id, 
        "something")
    .With(x => x.Things, 
        fixture.CreateMany<Something>().ToList())
    .Create();
于 2013-05-06T08:00:00.453 に答える