我使用nBuilder填充对象图,但它只填充值类型。我想让它填充引用类型(相关对象)。
http://nbuilder.org/
发布于 2011-12-08 14:03:07
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"));发布于 2015-11-06 19:52:20
我发现NBuilder的一个局限性是,它以这种方式为字符串生成的数据是基于属性名称的,例如Name1,Street1,Zipcode1,正如你在上面看到的。我发现自己在使用.Phrase(),但它不能生成合理的随机数据,而且像电子邮件这样的项目必须拼凑在一起。
您可以通过nuget link here or use Visual Studio下载Faker.Net,并让它创建模拟数据作为构建命令的一部分。然后,您可以使用它来构建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();This blog post详细介绍了更多的示例。
发布于 2019-10-16 17:34:08
这在NBuilder中是不可能的。
通过有一个手工制作的工具。This article包含递归调用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;https://stackoverflow.com/questions/4371936
复制相似问题