gpt4 book ai didi

c# - Autofixture Fixture.Build().With() 在相​​同的属性名称上

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

当我使用“with”方法设置属性时,它会将同名嵌套对象的所有属性留空。

(我使用的是 autofixture 的最新版本 3.0.8)

public class Something {
public string Id { get; set; }
public IList<Something> Things { get; set; }
}

var obj = Fixture.Build<Something>().With(q => q.Id, "something").CreateAnonymous()

在这种情况下,obj.Id == "something"等于 true,但 obj.Things[0].Id == null 也等于 true。

我认为有错误或我弄错了;有人可以帮忙吗?

最佳答案

默认情况下,AutoFixture 不会创建 Something 的实例,因为图形包含循环引用。

您可以做的是在 Fixture 实例上添加/删除适当的行为:

fixture.Behaviors.Remove(new ThrowingRecursionBehavior());
fixture.Behaviors.Add(new OmitOnRecursionBehavior());

您现在可以创建 Something 的实例,但是现在省略了 Things 属性(循环引用)。

这就是为什么你得到一个空列表..

但是,您可以进一步自定义创建算法:

var obj = fixture.Build<Something>()
.With(x => x.Id,
"something")
.With(x => x.Things,
fixture.CreateMany<Something>().ToList())
.Create();

关于c# - Autofixture Fixture.Build().With() 在相​​同的属性名称上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16393852/

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