问题描述
|
我目前正在使用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监视测试代码覆盖。