【发布时间】:2010-11-08 12:16:23
【问题描述】:
更新:
根据我收到的几个答案,我只想说明我很清楚如何使用模拟框架来模拟 HttpContext。 与在 HttpContext 周围使用包装类相比,我更感兴趣的是了解模拟 HttpContext 的优缺点。
我正在寻找有关在 ASP.Net MVC 中构建可测试控制器时如何处理 HttpContext 的意见。在阅读了它之后,似乎有两种思想流派 - 要么构建 HttpContextBase 并使用模拟框架为您的单元测试生成所需的存根/模拟,或者围绕您打算使用的 HttpContext 区域构建不可知的包装类.
现在我倾向于构建 HttpContextBase。看起来它既是更快的开发过程,又更容易维护,因为您不必花时间开发和维护额外的包装类。我可以看到包装类可能是如何有益的,因为它们抽象出底层实现并将控制器的上下文与请求分开 - 但我不确定这是否值得额外的设置和维护开销。
您认为这两种方法的优缺点是什么?您何时会选择其中一种?是否有某些类型的开发更适合其中一种解决方案?
由于这似乎是大多数进行单元测试和使用 ASP.Net MVC 的团队都必须处理的常见问题,您将如何处理这个问题?如果您已经解决了这个问题,您的解决方案是如何发挥作用的?您现在会采取哪些不同的做法?
【问题讨论】:
标签: asp.net-mvc unit-testing tdd mocking