gpt4 book ai didi

c# - AutoFixture 自定义与构建

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

我知道我可以使用 AutoFixture使用

创建一个自动模拟实例
var person = fixture.Create<Person>();

但是,如果我想自定义创建 Person 的方式,我有多种选择。一种是使用 Build

var person = fixture.Build<Person>()
.With(x => x.FirstName, "Owain")
.Create();

还有一个是使用Customize

fixture.Customize<Person>(c => c.With(x => x.FirstName, "Owain"));
var person = fixture.Create<Person>();

那么,我的问题是,上面列出的每种方法的各种优点和缺陷是什么,还有其他/更好的方法吗?

最佳答案

.Build<>.With().Create()使用这些属性创建实例。 future 调用 .Create<>() (对于同一类型)未感染。

.Customize<>为创建类型定义额外的“步骤”。这意味着以后所有对 .Create<>() 的调用(对于相同类型)将执行相同的步骤。

基本上,如果特定类型的所有已创建对象都需要相同的设置,您将使用自定义。


var person_1 = fixture.Build<Person>()
.With(x => x.FirstName, "Owain")
.Create();

var person_2 = fixture.Create<Person>();

fixture.Customize<Person>(c => c.With(x => x.FirstName, "Owain"));
// All subsequent calls to Create for type Person will use the customization.

var person_3 = fixture.Create<Person>();
var person_4 = fixture.Create<Person>();

//person_1.FirstName == "Owain"
//person_2.FirstName != "Owain"
//person_3.FirstName == "Owain"
//person_4.FirstName == "Owain"

圣书相关页数:

  1. 自定义:Customizing A Type's Builder With AutoFixture
  2. Build.Do.With:Do Redux

关于c# - AutoFixture 自定义与构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57526272/

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