例如,我有这些由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();
这解决了问题,但我需要导航属性不为空。