Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用AutoFixture创建EF实体存根_C#_Entity Framework_Unit Testing_Stub_Autofixture - Fatal编程技术网

C# 使用AutoFixture创建EF实体存根

C# 使用AutoFixture创建EF实体存根,c#,entity-framework,unit-testing,stub,autofixture,C#,Entity Framework,Unit Testing,Stub,Autofixture,例如,我首先得到了由EF数据库生成的这些分部类: 狗:(EF实体) 宠物所有者:(EF实体) 这里我不需要任何EF功能,只需要一个简单的类和一个要测试的属性。我有NUnit,Moq,自动夹具 更新: var dog = fixture.Build<Dog>().Without(x => x.PetOwner).Create(); var dog=fixture.Build().Without(x=>x.PetOwner.Create(); 这解决了问题,但我需要导航属性不为

例如,我首先得到了由EF数据库生成的这些分部类:

狗:(EF实体)

宠物所有者:(EF实体)

这里我不需要任何EF功能,只需要一个简单的类和一个要测试的属性。我有NUnit,Moq,自动夹具

更新:

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

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

我无法重现错误。使用以下方法,该测试完全通过:


这将产生与上一个测试相同的结果,其中
PetOwner.Dogs
属性设置为空序列,即。

@Enrico Campidoglio,测试永远不会结束。我正在收集更多信息。不要更新你的Q,包括里面的答案。如果你为自己的问题找到了一个有效的答案,你自己回答,并接受它为有效答案(我认为你必须等待两天才能这样做)。这使它对社区有用。并且,如果像在本例中一样,您部分地解决了问题,您可以编辑这个Q,回答它,并用新问题创建一个新的Q。这是一个多一点的工作,但它要好得多。你需要
PetOwner.Dogs
集合也被填充吗?@Enrico Campidoglio,不,我只需要
Dog
PetOwner
导航属性和
PetOwnerID
PetOwnerName
。谢谢你,Enrico!是的,现在我也能用了<代码>自定义看起来很酷。我在我真正更复杂的代码中仍然有一个问题,有许多依赖项,如果我发现一些有用的东西,我将补充这些有用的信息。
public partial class PetOwner
{
    public int PetOwnerID { get; set; }
    public string PetOwnerName { get; set; }
    // Navigation property
    public virtual ICollection<Dog> Dogs { get; set; }
}
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>();
var dog = fixture.Build<Dog>().Without(x => x.PetOwner).Create();
[Test]
public void CreateEntityWithNavigationProperty()
{
    var fixture = new Fixture();
    fixture.Behaviors.Add(new OmitOnRecursionBehavior());

    var dog = fixture.Create<Dog>();

    Assert.That(dog.PetOwner, Is.Not.Null);
    Assert.That(dog.PetOwner.Dogs, Is.Empty);
}
[Test]
public void CreateEntityWithNavigationProperty()
{
    var fixture = new Fixture();
    fixture.Customize<PetOwner>(c =>
        c.With(owner => owner.Dogs, Enumerable.Empty<Dog>()));

    var dog = fixture.Create<Dog>();

    Assert.That(dog.PetOwner, Is.Not.Null);
    Assert.That(dog.PetOwner.Dogs, Is.Empty);
}