使用 EF 进行单元测试 - 为什么我的模型总是空的

本文关键字:模型 我的 为什么 EF 单元测试 使用 | 更新日期: 2023-09-27 18:33:39

我在MVC-5,EF-6项目上使用VS单元测试。 现在,我只想通过让我的方法像往常一样连接到实际数据库来让我的单元测试工作。 我已经读了很多关于你是否应该为了单元测试的目的而模拟数据库的文章,所以没有必要告诉我你对此的立场。

我有一个这样的单元测试:

    [TestMethod]
    public void SelectAssessmentTypeWhenLoggedIn()
    {
        // Arrange - login (otherwise it won't let you do this)
        var c = new AccountController();
        c.Login("username", "password");//I'm not showing you the real ones
        var abc = new AssessmentBuilderController();
        // Act - call the SelectAssessmentType() method
        ActionResult result = abc.SelectAssessmentType();
        //Assert -  model should have 4 ATs in it
        Assert.AreEqual(((result as ViewResult).Model as IEnumerable<AssessmentType>).Count(), 4);
    }

从应用程序调用时,该方法在其模型中始终有 4 个条目(顺便说一句)。 但是当从单元测试运行时,它始终具有 0。 下面是该方法的代码:

    private List<AssessmentType> GetAssessmentTypes()
    {
        using (var context = new CLASSContext()) {
            return context.AssessmentType.ToList();
        }
    }

我可以调试单元测试并逐步完成代码,并查看上下文已创建且表在上下文中,并查看要执行的 SQL 语句,但模型(评估类型列表)之后有 0 个条目! 这是怎么回事?

使用 EF 进行单元测试 - 为什么我的模型总是空的

测试项目有自己的app.config配置文件 - 连接字符串应该在那里更改。 Web.config 适用于 Web 项目。