单元测试模块化ASP.Net Webforms页面

问题描述

| 我目前正在使用ASP.Net Web表单的旧版应用程序。此应用程序中的页面在aspx和ascx文件中混合了格式和逻辑。通常情况如下:
if (number of passengers > 1)
  include singlePassengerForm.ascx
else 
  include multiPassengerForm.ascx
但要想复杂得多-嵌套的ascx包含更多逻辑,更大页面等。 我想解决此问题,但要慢慢解决。我目前正在追求的最终设计是非常轻巧的页面/控件,它没有任何逻辑,但是只会从模型中挑选东西(包括要嵌入的ascx)。我喜欢将页面和控件分解为较小的事实,我想保留这一点。因此,这将转换为一个互连的模型(例如:ReservationFormModel具有一个PassengerFormModel-可以是SinglePassengerForm或MultiplePassengerForm)和一组互连的页面,其中可能包含一组用于填充模型并将模型与页面连接的控制器。所以有点MVCish。基本想法是,我想对该逻辑进行单元测试。 我想做的另一件事是将其修复为一个持续进行的过程-并非一帆风顺。因此,我希望能够从小处着手,在这里我只修复页面的一部分,而页面的其余部分仍使用aspx / ascx中的嵌入式逻辑和数据的旧方法。 任何对此的想法/建议/经验报告将不胜感激。 我已经看到了答案:对ASP.NET 2.0网页进行单元测试的最佳方法是什么?以及:单元测试旧版ASP.NET Webforms应用程序 但我正在寻找更具体的东西     

解决方法

        众所周知,WebForm路径不是编写代码的最可测试的方法。实际上,MVC模式的一个关键方面是可以更好地测试控制器。 一个简单的解决方案是将核心逻辑包括在MVC Controller之类的\“ Logic \”类中,并仅使用后页代码将数据绑定到控件。然后,您可以使用例如NUnit框架创建测试夹具,并使用NCover监视测试代码覆盖。