C# 单元测试ef数据模型

C# 单元测试ef数据模型,c#,testing,tdd,nunit,C#,Testing,Tdd,Nunit,我在业余时间做一个私人的c#项目。在此之前,我没有真正做过任何单元测试,但我认为是时候学习了,所以我阅读了一些教程/博客,并在VS2010中安装了NUnit和Testdriven.Net,我想我现在已经掌握了基本知识 我的项目使用一个数据模型,这是我使用EF4创建的。我还创建了一个存储库来检索数据,现在我想测试该存储库。我应该如何测试它?每次我想在存储库中测试一个方法时,我是否可以避免调用数据库 欢呼声定义了一个IRepository接口。有一个真正的使用数据库的it实现。为了单元测试的目的,它

我在业余时间做一个私人的c#项目。在此之前,我没有真正做过任何单元测试,但我认为是时候学习了,所以我阅读了一些教程/博客,并在VS2010中安装了NUnit和Testdriven.Net,我想我现在已经掌握了基本知识

我的项目使用一个数据模型,这是我使用EF4创建的。我还创建了一个存储库来检索数据,现在我想测试该存储库。我应该如何测试它?每次我想在存储库中测试一个方法时,我是否可以避免调用数据库


欢呼声定义了一个IRepository接口。有一个真正的使用数据库的it实现。为了单元测试的目的,它有一个假实现,返回虚拟对象。你也可以使用模拟框架来创建存储库的“假”版本。这是我经常使用的。本质上,您编写代码来根据配置伪造存储库的返回值

var mock = new Mock<YourObject>();
mock.Setup(m => m.DoSomething().Returns(true));
var result = mock.Object.DoSomething();
Assert.IsTrue(result);
var mock=new mock();
Setup(m=>m.DoSomething().Returns(true));
var result=mock.Object.DoSomething();
断言(结果);

这里有一个关于Stephen Walther的很好的教程。

如果我决定使用Moq,而我必须为模型中的每个实体定义一个接口,那么我找到了这个教程,但我无法将Moq.contrib添加到名称空间中。有没有人经历过同样的问题?