5

nBuilderを使用してオブジェクトグラフにデータを入力していますが、値の型のみを入力しています。参照型(関連オブジェクト)を入力する必要があります。

http://nbuilder.org/

4

3 に答える 3

6

現時点では、NBuilderは参照型の自動入力をサポートしていません。

ただし、ビルダーを使用して各参照型を作成することにより、必要なことを実行できます。

現時点では、おそらくこれを行っています。

var person = Builder<Person>
    .CreateNew()
    .Build();

Assert.That(person.Name, Is.EqualTo("Name1"));
Assert.That(person.Address, Is.Null);

あなたがしたいことはこれです:

var address = Builder<Address>
    .CreateNew()
    .Build();

var person2 = Builder<Person>
    .CreateNew()
    .With(x => x.Address = address)
    .Build();

Assert.That(person2.Name, Is.EqualTo("Name1"));
Assert.That(person2.Address, Is.Not.Null);
Assert.That(person2.Address.Street, Is.EqualTo("Street1"));
Assert.That(person2.Address.Zipcode, Is.EqualTo("Zipcode1"));
于 2011-12-08T06:03:07.433 に答える
1

NBuilderで私が見つけた制限は、この方法で文字列に対して生成されるデータは、上記のようにName1、Street1、Zipcode1などのプロパティ名に基づいていることです。.Phrase()を使用していることに気づきましたが、それは賢明なランダムデータを生成せず、電子メールなどのアイテムをつなぎ合わせる必要がありました。

こちらのnugetリンクからFaker.Netをダウンロードするか、Visual Studioを使用して、ビルドコマンドの一部としてモックデータを作成することができます。次に、それを使用して、Personモックオブジェクトを構築できます(Faker / NBuilderを再度使用)。

var addresses = Builder<Address>.CreateListOfSize(20)
    .All()
        .With(c => c.Street = Faker.StreetName().First())
        .With(c => c.State = Faker.UsState().First())
        .With(c => c.ZipCode = Faker.ZipCode().First())
    .Build();

このブログ投稿では、さらにいくつかの例について詳しく説明しています。

于 2015-11-06T11:52:19.693 に答える
1

これはNBuilderでは不可能です。

でも手作りの道具がありますこの記事には、NBuilderを再帰的に呼び出して、ルートオブジェクトの参照プロパティとコレクションプロパティを(指定された深さまで)満たすオブジェクトを作成するコードスニペットが含まれています。

var recursiveObjectBuilder = new RecursiveObjectBuilder(graphDepth: 2, listSize: 3);

var complexObject = recursiveObjectBuilder.CreateGenericObject<ComplexType>(recursive:true);

Assert.NotNull(complexObject.ReferenceToOtherObject);
int someValue = complexObject.ReferenceToOtherObject.SomeValue;
于 2019-10-16T09:34:08.453 に答える