加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – Autofixture Fixture.Build().With()On Same Property Nam

发布时间:2020-12-16 00:22:59 所属栏目:百科 来源:网络整理
导读:当我使用“with”方法设置属性时,它会在同名的嵌套对象上保留null所有属性. (我使用autofixture的最新版本为3.0.8) public class Something { public string Id { get; set; } public IListSomething Things { get; set; }}var obj = Fixture.BuildSomething
当我使用“with”方法设置属性时,它会在同名的嵌套对象上保留null所有属性.

(我使用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 equalsto 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();

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读