【问题标题】:MVC4 controller unit testingMVC4 控制器单元测试
【发布时间】:2014-01-16 14:15:00
【问题描述】:

我将 Ninject 用于 IOC,并为每个模型使用单独的存储库。

我打算为控制器编写一些单元测试,但是 我不想要集成测试 - 我已经这样做了 - 我不想碰 DB.

我有两个选择

  1. 使用起订量,为起订量对象准备所有设置和退货
  2. 使用我现有的接口和 Ninject 创建我自己的内存存储库,它不会触及 DB,但会返回简单的列表。

从理论角度来看,哪种方法更正确?

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

或者也许这两个选项是一样的,我试图把简单的事情复杂化?

【问题讨论】:

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


    【解决方案1】:

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

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

    话虽如此,根据您要模拟的实现,有些人根本不会费心模拟他们的 DAL。 DAL 允许用数据的内存表示来替换实际的数据库。但是不需要自己编写所有的方法进行测试。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-15
      • 1970-01-01
      • 2020-08-12
      • 2017-06-26
      • 2011-12-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多