使用AutoFixture创建EF实体存根

时间:2015-11-23 11:17:30

标签: c# entity-framework unit-testing stub autofixture

例如,我有这些由EF Database First生成的部分类:

狗: (EF实体)

public partial class Dog
{
    public int DogID { get; set; }
    public string Name { get; set; }
    public int Age { get; set; }
    public int PetOwnerID { get; set; }
    // Navigation property
    public virtual PetOwner PetOwner { get; set; }
}

PetOwner: (EF实体)

public partial class PetOwner
{
    public int PetOwnerID { get; set; }
    public string PetOwnerName { get; set; }
    // Navigation property
    public virtual ICollection<Dog> Dogs { get; set; }
}

我需要一个Dog类型的简单存根来进行单元测试。但是当我尝试使用AutoFixture生成存根时,会抛出递归依赖性异常。如果我尝试改变这样的夹具行为,它会挂起。

var fixture = new Fixture();
fixture.Behaviors.OfType<ThrowingRecursionBehavior>().ToList().ForEach(b => fixture.Behaviors.Remove(b));
fixture.Behaviors.Add(new OmitOnRecursionBehavior(1));
var dog = fixture.Create<Dog>();

我这里不需要任何EF功能,只是一个带有要测试的属性的简单类。我有NUnit,Moq,AutoFixture。

更新

var dog = fixture.Build<Dog>().Without(x => x.PetOwner).Create();

这解决了问题,但我需要导航属性不为空。

0 个答案:

没有答案