我花了一些时间试图理解单元测试的主题,因为它与使用 EF 5.0/DbContext 相关。下面的功能是单元测试的功能。根据我的基本理解,我似乎有以下选择。
我创建了一个存储库接口。一个是真正的实现,另一个是假的。假的将使用我从实体对象创建的数据。在这种情况下,我可以创建一个列表...但问题似乎是 linq->objects (测试)与 linq->EF 不同,所以我没有真正测试任何东西?
以某种方式使用来自 DBContext 的信息创建一个小型测试数据库。然后将数据添加到数据库并检索它。虽然不知道我会怎么做。作为 MSunit 测试运行的一部分,如何获取从我的 Dbcontext 创建的数据库?
不需要单元测试。它真的只是在测试 EF 上下文的 'Where' 扩展方法吗?
所以..有人可以解释一下思考这个问题的正确方法吗?当您从大多数演示的 MVC 控制器中调用它们时,我了解单元测试存储库模式的基本概念。
public class MSAManager// : IMSAManager
{
private MATT_LocalStatisticsEntities context = new MATT_LocalStatisticsEntities();
//Takes series of FIPS codes and sees if they exist in the DB
public bool IsPlaceExistsV1(string FIPS_SMA, string FIPS_StateCode, string FIPS_CountyCode, string FIPS_EntityCode, DateTime year)
{
var duplicate = context.Places.Where(x => ((x.FIPSMSA == FIPS_SMA) &&
(x.FIPSState == FIPS_StateCode) &&
(x.FIPSCounty == FIPS_CountyCode) &&
(x.FIPSEntity == FIPS_EntityCode) &&
(x.StartDate == year)
));
return (duplicate.Count() != 0);
}