我正在我的项目中编写一些单元测试,并且我在控制器上有一个datacontext依赖项,其中包含我想要测试的方法。
我正在使用Ninject注入依赖项和Moq来创建我的模拟datacontext。我的DI使用了一个接口IDataContext
,我的dbml会在接口注入过程中使用它。
在我的单元测试中,我正在创建我的模拟datacontext,如下所示:
var mock = new Mock<IDataContext>();
var myController = new MyController(mock.Object);
这会在执行datacontexts构造函数时在第二行引发Object reference not set to an instance of an object.
异常。
我很明显错过了设置它的基本部分,但是我见过的大部分Moq示例都涉及使用Setup()
对模拟对象进行某种测试。
我是以正确的方式来做这件事的吗?我应该创建我的IDataContext
界面或其他东西的模拟吗?
答案 0 :(得分:2)
哈哈, 在我阅读emad's blog on unit testing in ASP.Net MVC.
时,答案来了我猜你没有将连接字符串添加到测试项目的app.config中吗? :)
这就是数据库依赖方式,因为你还没有嘲笑数据库端。 因此,如果你想这样做,你需要谷歌搜索一些代码,有几种方法可以做到这一点。
我发现下面的这几个引用非常有用,但由于我真的不需要模拟数据库端,我现在只是使用我的测试数据库服务器。