使用Linq EF 6的单元测试方法

时间:2014-03-13 14:59:05

标签: entity-framework asp.net-mvc-5

我正在使用EF 6和MVC 5.我有一个调用MaxScore的方法,见下文。我测试了它,它在我的项目中工作。我是单元测试的新手,所以我决定尝试使用这种方法。当我调试测试时,我收到一个错误,“对象引用未设置为对象的实例”。错误指向下面方法中的第6行。有什么想法吗?

这是我的方法:

private HandicapSystemContext db = new HandicapSystemContext();

public int MaxScore(double handicap)
    {
        int _maxScore = 0;
        _maxScore = db.AdjustedGrossScores.FirstOrDefault(x => x.MinimiumHandicap <= handicap && x.MaximumHandicap >= handicap).Score;
        return _maxScore;
    }

这是我的单元测试方法:

[TestMethod]
public void TestMaxScore()
{
    int _maxScore = 0;
    Calculation hc = new Calculation();
    _maxScore = hc.MaxScore(10);
    Assert.AreEqual(_maxScore, 7);
}

1 个答案:

答案 0 :(得分:0)

要解决这个问题,我必须在Test Project中添加Entity Framewwork(使用NuGet)。我在app.config文件中添加了一个连接字符串。由于我正在使用Code First并在模型更改时删除并重新生成数据库,因此我不得不将localDB文件复制到/ bin / Debug /文件夹。每次数据库更改时我都必须重新复制数据库,直到我进入固态并切换到Sql Server数据库。