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
Visual studio 使用实体框架进行单元测试存储过程调用_Visual Studio_Entity Framework_Unit Testing_Stored Procedures - Fatal编程技术网

Visual studio 使用实体框架进行单元测试存储过程调用

Visual studio 使用实体框架进行单元测试存储过程调用,visual-studio,entity-framework,unit-testing,stored-procedures,Visual Studio,Entity Framework,Unit Testing,Stored Procedures,我需要添加单元测试并增加基于实体框架的存储过程调用的应用程序的代码覆盖率 例1: public virtual DbSet<Person> Persons { get; set; } public virtual IEnumerable<Person> PersonsFromSP() { return Persons.SqlQuery("spGetPersons").ToList(); } 公共虚拟数据库集人员{get;

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

例1:

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

    public virtual IEnumerable<Person> PersonsFromSP()
    {
        return Persons.SqlQuery("spGetPersons").ToList();
    }
公共虚拟数据库集人员{get;set;}
公共虚拟IEnumerable PersonsFromSP()
{
return Persons.SqlQuery(“spGetPersons”).ToList();
}
例2:

    public virtual IEnumerable<Animal> AnimalsFromSP()
    {
        return Database.SqlQuery<Animal>("spGetAnimals").ToList();
    }
公共虚拟IEnumerable AnimalsFromSP()
{
return Database.SqlQuery(“spGetAnimals”).ToList();
}
还有业务逻辑和其他东西的代码,但都是基于这些调用的

测试这个的好方法是什么


提前谢谢。

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

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

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

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