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

时间:2014-12-08 19:59:20

标签: c# entity-framework unit-testing asp.net-mvc-5

我在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语句 AND YET 模型(AssessmentTypes列表) )之后有0个条目!发生了什么事?

1 个答案:

答案 0 :(得分:1)

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