如何使用Entity Framework测试视图?

时间:2015-02-13 08:38:55

标签: c# sql-server entity-framework unit-testing views

我们使用的数据库不是我们要管理的。我们在其上定义了一些视图,以便我们的代码(带有实体框架的C#)可以简单地映射到这些视图。这些视图将在稍后提供给数据库所有者。他们将实施它们,以便我们可以使用它们。

在测试期间,我们模拟该数据库。我们在数据库的备份上使用Entity Framework Tools来生成它的DbContext。我们每次运行测试时都会创建它。这甚至是走的路吗?

在测试期间,我们希望在某些表中插入数据,并从相关视图中读取结果。我们这样做是为了测试视图以及将对其进行操作的C#代码(这些视图中存在非平凡的逻辑)。

您对此有何看法?我们不应该每次重新创建模拟数据库,而是使用已定义视图的静态数据库吗?我们应该在C#中定义视图,以便在数据库中创建它们吗?我们的方法完全错了吗?其他人如何解决类似问题?

1 个答案:

答案 0 :(得分:0)

"在测试期间,我们模拟了该数据库...."

在EF版本6或更高版本中,您还可以模拟DBContext。

"在测试期间,我们想插入..."

您是否拥有继承的DBContext的源代码?我建议像表一样处理视图。为它创建一个类(实体),并在您的applicationDBContext中将视图映射为普通表。

 public DbSet<ImAView> ImAViews { get; set; }

使用数据库迁移,您可以使用普通的T-SQL脚本修改视图。

&#34;您对此有何看法?不该&#39; T&#34;

如果您正在测试应用程序(也是版本6中的数据访问层),您可以模拟所有内容。不要使用数据库创建,这将使您的测试非常慢,在某些情况下,测试将取决于其他测试。

如果您想自行测试数据库或迁移或一些批量操作,那么您必须创建一个数据库(您可以在没有C#的SQL Server中执行所有操作)并将其与数据一起提供。