我们有一个ASP.NET WebForms应用程序,我们将转换为ASP.NET MVC应用程序 - 其中一个原因是我们可以充分利用单元测试和TDD。
我们当前的WebForms应用程序大量使用HttpModules。我们目前正在讨论是否应该坚持使用HttpModules或使用全局过滤器(这里的任何建议都会很棒)。
但是,在我的几个“hello world”测试MVC应用程序中,我还没有弄清楚如何在单元测试时触发HttpModule(或者实际上是全局过滤器)代码。
也许我错了,但在我看来,我需要将其作为我的单元测试(集成测试)的一部分,否则它不能真实地反映我的生产代码中发生的事情。
欢迎任何指导。
由于
格里夫
PS - 我在对我的问题做出初步回答后添加了以下内容。
简单化妆用例
生产中
单元测试
我的想法是:
我认为这是我将采取的方法,但如果有人能够建议我如何使我的集成测试(如上所述)工作那么我将非常感激。
我看到的问题是我的TEST项目在运行我的测试时成为“启动”项目,因此HttpModules(在ASP.NET MVC的web.config文件中定义)和全局过滤器(在ASP.NET MVC的global.asax文件)将无法运行,因为未执行web.config和global.asax文件。所以问题仍然存在:如何在集成测试中运行这些?
谢谢大家
格里夫
答案 0 :(得分:4)
您不应该进行测试以检查全局过滤器是否触发。触发代码的机制不是您的代码,它是框架的一部分,因此框架团队应该测试它。
相反,您应该只是进行测试以确保已应用全局过滤器。
答案 1 :(得分:2)
是否调用HttpModule或全局过滤器由Framework处理。您不应该担心单元测试由Framework处理的事情。您的单元测试应仅测试您的HttpModule或全局过滤器在被调用时是否正常运行。
答案 2 :(得分:1)
我会模拟http模块和存储库来对控制器和服务进行单元测试,在我看来,这就是你如何进行单元测试。您可以使用端到端测试来测试全局过滤器和httpmodules。希望它有所帮助。