代码之家  ›  专栏  ›  技术社区  ›  GregH

具有复杂子属性的.NET AutoFixture

  •  0
  • GregH  · 技术社区  · 7 年前

    AutoFixture 为单元测试创建一些测试数据。到目前为止,看起来这将节省我们相当多的代码/维护。我现在唯一的问题是,当创建一个对象时,它上面的复杂子对象将不能正确地连接id。我试图找到一种方法来优雅地克服这一点,而不是仅仅在对象创建后手动连接id。见下例:

    public class Bar
    {
        public int Id {get; set;}
    
        public string Name {get; set;}
    
        public Foo Foo {get; set;}
    
        public int FooId {get; set;}
    }
    
    public class Foo
    {
        public int Id {get; set}
    
        public string Description {get; set;}
    }
    

    在本例中,调用 var myBar = myFixture.Create<Bar>() 将填充两者的所有属性 Bar Foo myBar.FooId 将与的值不同 myBar.Foo.Id

    1 回复  |  直到 7 年前
        1
  •  2
  •   Antoine V    7 年前

    你能试试这个吗:

    var obj = myFixture
        .Build<Bar>()
        .Without(b => b.Foo)
        .Without(b => b.FooId)
        .Do(b =>
            {
                b.Foo = fixture.Create<Foo>();
                b.FooId = fixture.Create<int>();
                b.Foo.Id = b.FooId;
            })
        .Create()
    

    3rd package 它支持在EF中初始化AutoFixture的导航属性

    对于匹配的int\uu Id属性。如果存在,它将设置Id 新对象的属性,以便福巴里德== 餐饮部Id.这也是