gpt4 book ai didi

c# - 如何使用 AutoFixture 为属于类的属性生成数据?

转载 作者:行者123 更新时间:2023-11-30 21:51:48 25 4
gpt4 key购买 nike

我正在尝试自定义在一个类中生成的数据......其中一个属性是另一个类。

例如。

public class Foo
{
public string Id { get; set; }
public Baa Baa { get; set; }
}


public class Baa
{
// 30 properties which are strings, ints, etc.
}

我想知道我是否可以做这样的事情......

var fixture = new Fixture();
return fixture.Build<Foo>()
.With(x => x.Id, $"Foo-{fixture.Create<int>()}")
.With(x => x.Baa, CreateSomeCustomBaaUsingAutofixture)
.Create();

然后..

private Baa CreateSomeCustomBaaUsingAutofixture()
{
var fixture = new Fixture();
return fixture.Build<Baa>()
.With(lots of customizations here)
.Create();
}

有没有更简洁的方法来做到这一点?还是 .. 这基本上是唯一/推荐的方式?

我知道 AutoFixture 可以自动为我创建一个 Baa 的实例,并为其中的属性创建数据。我只是希望对它进行更多自定义。

最佳答案

既然你想按照惯例配置Baa,你可以简单地这样做。它可能看起来像这样:

fixture.Customize<Baa>(c => c
.With(x => x.Baz, "Corge")
.With(x => x.Qux, "Garply"));

每当您创建一个 Foo 对象时,Baa 属性都会有一个根据这些规则创建的值:

var foo = fixture.Create<Foo>();
Console.WriteLine(foo.Baa.Baz);
Console.WriteLine(foo.Baa.Qux);

打印:

Corge
Garply

关于c# - 如何使用 AutoFixture 为属于类的属性生成数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35215764/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com