【发布时间】:2013-11-13 14:56:20
【问题描述】:
我按照here 的回答为实体框架中的 DbContext 创建了一个接口。问题是,我不知道如何使用它进行单元测试。我试图测试的控制器有两个构造函数。一个没有参数并将 IDbContext 实例变量设置为新的 DbContext。另一个采用 IDbContext 并设置相同的实例变量。我正在测试的方法就是这样做
return context.EntitySet<question>().ToList();
以下是我使用 Moq 和测试控制器的失败尝试。我没有更改答案中列出的接口或部分类中的任何内容。也许我需要添加一些东西?
Mock<IDbContext> mockContext = new Mock<IDbContext>();
question TestQuestion = new question {
Id = 1,
ToAsk = "Did this test work?"
};
mockContext.Object.EntitySet<question>().Add(TestQuestion);
QuestionsController controller = new QuestionsController( mockContext.Object );
List<DHT.Entity.Models.question> questions = controller.Get();
Assert.AreEqual(questions.Count, 1);
我对 .NET 和 C# 还很陌生,所以如果我做的一切都完全错误,请告诉我。我给出的链接中的方法似乎比实现整个存储库模式更简单。我只是想找到最简单的方法来对我的代码进行单元测试。
【问题讨论】:
-
Effort 是一个不错的 EF 单元测试工具。
-
谢谢肖恩,我得看看那个。看起来很有希望。
标签: c# entity-framework unit-testing