当前位置:  开发笔记 > 编程语言 > 正文

努力单元测试实体框架6.1.3 DB-first

如何解决《努力单元测试实体框架6.1.3DB-first》经验,为你挑选了1个好方法。

使用Effort框架(版本1.1.4)对我的数据库层进行单元测试时遇到问题.

我有一个使用Entity framework 6.1.3的DB层,并且使用数据库优先方法创建模型,因此有一个*.edmx描述模型的文件.

我创建了一个部分类来公开单元测试使用的额外构造函数,如下所示:

public partial class Entities
{
    public Entities(DbConnection connection)
        : base(connection, true)
    {
    }
}

简单的单元测试如下所示:

    private Entities CreateContext()
    {
        //var connectionString = ConfigurationManager.ConnectionStrings["Entities"].ConnectionString;
        //var connection = Effort.EntityConnectionFactory.CreateTransient(connectionString);
        //return new Entities(connection as DbConnection);

        var connection = Effort.EntityConnectionFactory.CreatePersistent("name=Entities");
        var context = new Entities(connection);
        return context;
    }

    [TestMethod]
    public void Testing_Effort_Integration()
    {
        using (var context = CreateContext())
        {
            var entity = context.TableEntity.FirstOrDefault(i=> i.Id);
            Assert.IsNotNull(entity);
        }
    }

当我运行单元测试时,它会抛出一行异常:

var connection  = Effort.EntityConnectionFactory.CreatePersistent("name=Entities");

{"提供程序未返回ProviderManifest实例."} InnerException消息:{"无法确定存储版本;需要有效的存储连接或版本提示."}

我发现的其他帖子建议ProviderManifestToken*.edmx文件中的属性从"2012"更改为"2008".这似乎解决了这个问题,但是在尝试第一次使用上下文时,又给出了另一个例外:

var entity = context.TableEntity.FirstOrDefault(i=> i.Id);

NotSupportedException无法确定"System.Data.EntityClient.EntityProviderFactory"类型的提供程序工厂的提供程序名称.确保在应用程序配置中安装或注册了ADO.NET提供程序.

任何人都知道如何解决这个问题所以我可以使用Effort实体框架6.1.3 DB-first方法?

我已经成功地使用Effort(版本1.1.4)来使用DB-first方法对在EF 4和EF 5中创建的DB层进行单元测试 - 这就是为什么我认为EF版本可能会引起关注...



1> gurkan..:

我的一位同事找到了我的问题的解决方案!

显然我使用的是"Effort"nuget包而不是"Effort.EF6"nuget包.卸载并安装另一个后,我还必须使用标签更新我的App.Config:

  
    
        
    
  

  
    
      
    
  

我还在SetUp中调用了我的单元测试来注册工作提供者:

    [SetUp]
    public void Setup()
    {
        EffortProviderConfiguration.RegisterProvider();
    }

这解决了我的问题.希望它可以为他人提供一些帮助!

推荐阅读
小色米虫_524
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有