首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >nBuilder仅填充值类型

nBuilder仅填充值类型
EN

Stack Overflow用户
提问于 2010-12-07 07:14:31
回答 3查看 3.3K关注 0票数 5

我使用nBuilder填充对象图,但它只填充值类型。我想让它填充引用类型(相关对象)。

http://nbuilder.org/

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-12-08 14:03:07

NBuilder目前不支持自动填充引用类型。

但是,可以通过使用构建器创建每个引用类型来执行您想要的操作。

目前,您可能正在执行以下操作:

代码语言:javascript
复制
var person = Builder<Person>
    .CreateNew()
    .Build();

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

你想要做的是:

代码语言:javascript
复制
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"));
票数 6
EN

Stack Overflow用户

发布于 2015-11-06 19:52:20

我发现NBuilder的一个局限性是,它以这种方式为字符串生成的数据是基于属性名称的,例如Name1,Street1,Zipcode1,正如你在上面看到的。我发现自己在使用.Phrase(),但它不能生成合理的随机数据,而且像电子邮件这样的项目必须拼凑在一起。

您可以通过nuget link here or use Visual Studio下载Faker.Net,并让它创建模拟数据作为构建命令的一部分。然后,您可以使用它来构建Person模拟对象(再次使用Faker/NBuilder )。

代码语言:javascript
复制
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详细介绍了更多的示例。

票数 1
EN

Stack Overflow用户

发布于 2019-10-16 17:34:08

这在NBuilder中是不可能的。

通过有一个手工制作的工具This article包含递归调用NBuilder以创建填充根对象的引用和集合属性(直到给定深度)的对象的代码片段:

代码语言:javascript
复制
var recursiveObjectBuilder = new RecursiveObjectBuilder(graphDepth: 2, listSize: 3);

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

Assert.NotNull(complexObject.ReferenceToOtherObject);
int someValue = complexObject.ReferenceToOtherObject.SomeValue;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4371936

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档