我正在我的项目中编写一些单元测试,并且我对包含我想要测试的方法的 Controller 具有数据上下文依赖性。
我正在使用 Ninject 注入(inject)依赖项并使用 Moq 来创建我的模拟数据上下文。我的 DI 使用一个接口(interface) IDataContext
,我的 dbml impliments 并在整个注入(inject)过程中使用它。
在我的单元测试中,我正在创建我的模拟数据上下文,如下所示:
var mock = new Mock<IDataContext>();
var myController = new MyController(mock.Object);
这会在执行数据上下文构造函数时在第二行抛出 未设置对象实例的对象引用。
异常。
我显然缺少设置它的基本部分,但是我看到的大多数 Moq 示例都涉及使用 Setup()
对模拟对象进行某种测试。
我的做法是否正确?我应该创建一个模拟我的 IDataContext
接口(interface)还是其他东西?
最佳答案
哈哈, 答案是在我阅读 emad's blog on unit testing in ASP.Net MVC. 时出现的
我猜您没有将连接字符串添加到测试项目的 app.config 中,对吧? :)
这就是数据库依赖方式,因为您仍然没有模拟数据库端。 所以如果你想这样做,你需要在谷歌上搜索一些代码,有几种方法可以做到这一点。
我发现下面的这些引用资料非常有用,但由于我真的不需要模拟数据库端,所以我现在只是使用我的测试数据库服务器。
关于unit-testing - 为具有依赖性的对象模拟数据上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2967890/