如何与反向Poco生成器结合使用努力

时间:2019-03-13 08:45:54

标签: c# testing entity-framework-6 effort

所以我是Visual Studio 2017,EF6,并且我正在使用此T4模板https://marketplace.visualstudio.com/items?itemName=SimonHughes.EntityFrameworkReversePOCOGenerator生成上下文类

作为测试的忠实粉丝,我已经拥有100%的单元测试覆盖率,但是现在我想进行集成测试,可以在其中调用系统的多个部分并进行更改-但是,我当然想这样做而不接触真正的磁盘数据库。

因此,在进行了一些搜索之后,我发现了工作https://entityframework-effort.net/,对我来说,这正是我想要使用的东西。我可以在其中创建一个在内存中的数据库,在其中填充所需的固定装置,然后从系统的各个部分调用多个方法。但是,我试图找出的事情是如何使其在我遇到的情况下有效,我尝试了DBConnectionFactory,EntityConnectionFactory,ObjectConnectionFactory,每次收到错误消息时:-

“ EffortException:数据库尚未初始化”。

这是我在设置中使用的代码块:-

   var newsCtx = Effort.DbConnectionFactory.CreatePersistent("2");
   _newsEntities = new NewsEntities(newsCtx);
   _newsEntities.Database.CreateIfNotExists();
   _newsEntities.Channels.Add(new Channel
   {
            Id = 1,
            Title = "Convenience Store - ",
            Link = "https://www.conveniencestore.co.uk/XmlServers/navsectionRSS.aspx?navsectioncode=123",
            Description = "https://www.conveniencestore.co.uk",
            Image = "https://www.conveniencestore.co.uk/magazine/dest/graphics/logo/logo.png",
            PublishedAt = null,
            UpdatedAt = DateTime.Now.AddDays(-2),
            Enabled = true,
            Type = "Rss_2_0",
            Author = null,
            Category = null,
            Copyright = null,
            Generator = null
   });
   _newsEntities.SaveChanges();

当我进入saveChanges时,出现一个异常,该异常表明我添加了已经完成的.CreateIfNotExists(),但是,仍然出现错误。我可以在它可以工作的各个链接上看到示例和示例。但是,我不想放弃我的t4模板,因为它恰好提供了我想要的。

我有点迷茫,我想知道是否有人使用反向poco生成器来创建上下文并将其与Effort结合使用。我很想同时使用这两种方法,如果有人可以给我一个指针,以便我可以在内存DB中进行不错的集成测试,那我会像个小男孩一样开心

关于朱利安

这是Poco中从t4模板生成的方法

    public NewsEntities(System.Data.Common.DbConnection existingConnection)
        : base(existingConnection, true)
    {
        this.Database.Connection.Open();
    }

1 个答案:

答案 0 :(得分:1)

好吧,所以在回顾了https://www.stevefenton.co.uk/2015/11/using-an-in-memory-database-as-a-test-double-with-entity-framework/链接之后,我想知道我的反向poco生成器在这些方法中的行为方式

this.Database.Connection.Open();

这是造成问题的原因。...从.ttinclude poco生成器中删除此行使Effort能够运行。我为什么不知道为什么在那儿,删除它似乎没有效果。

因此,我很高兴再次成为一个沙子男孩,并且可以使用内存数据库继续进行集成测试。如果您遇到此问题,请查看是否有人修改了您的t4模板以执行其他操作。