MVC4控制器单元测试

时间:2013-12-29 15:46:48

标签: asp.net-mvc unit-testing asp.net-mvc-4 ninject moq

我正在使用Ninject for IOC并为每个模型分离存储库。

我要为控制器编写一些单元测试,但我不想进行集成测试 - 我已经这样做了 - 我不想触及数据库

我有两个选择

  1. 使用Moq,为moq对象准备所有设置和返回
  2. 使用我现有的接口和Ninject创建我自己的内存存储库,它不会触及数据库,但会返回简单的列表。
  3. 从理论的角度来看哪种方法会更正确?

    对我来说,第二个选项听起来更好,因为它将测试所有路径:UnitTest - > Controller(myMockRepository) - > Controller.AddItem() - > myMockRepository.AddItem()因此测试实际的应用程序架构。

    或者这两个选项可能是一样的,我试图使简单的事情过于复杂化?

1 个答案:

答案 0 :(得分:3)

将模拟实现注入控制器通常可以提供更多的灵活性并控制需要从模拟返回的数据。在单元测试中,通常不应该使用任何依赖注入框架。单元测试允许您在完整的 ISOLATION 中测试某些方法的功能。

我个人会选择一个模拟框架,然后将一个模拟的存储库实现注入控制器。

这就是说,根据你试图嘲笑的实现,有些人根本不打扰嘲笑他们的DAL。 DAL允许用内存中的数据表示替换实际数据库。但是不需要自己编写所有方法进行测试。