【问题标题】:Unit testing store procedure calls with Entity Framework使用实体框架对存储过程调用进行单元测试
【发布时间】:2018-03-26 17:36:39
【问题描述】:

我需要添加单元测试并增加基于使用实体框架的存储过程调用的应用程序的代码覆盖率。

示例 1:

    public virtual DbSet<Person> Persons { get; set; }

    public virtual IEnumerable<Person> PersonsFromSP()
    {
        return Persons.SqlQuery("spGetPersons").ToList();
    }

示例 2:

    public virtual IEnumerable<Animal> AnimalsFromSP()
    {
        return Database.SqlQuery<Animal>("spGetAnimals").ToList();
    }

还有包含业务逻辑和其他内容的代码,但都是基于这些调用。

有什么好的方法来测试这个?

提前致谢。

【问题讨论】:

    标签: visual-studio entity-framework unit-testing stored-procedures


    【解决方案1】:

    我尝试在另一个答案中描述我们的方法:here

    基本上,您需要有一个您的Context 类将实现的接口。 Context 类的方法由于与数据库的耦合,在单元测试时不会被测试。但是,您可以测试将引用接口而不是具体实现的其他类(业务逻辑)。

    链接的答案包含实现接口的一个细节。我们有两个属性,其中只有一个在接口中定义(示例中为AccountContacts)。然后AccountContacts 属性会将调用中继到具体实现。

    在您的情况下,您的 Persons 属性将是 Context 的客户端将使用的属性。然后你可以拥有另一个属性,DbPersons,它实际上将由存储过程填充。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-25
      相关资源
      最近更新 更多