我目前正在开发一个使用ASP.Net网络表单的遗留应用程序。此应用程序中的页面在aspx和ascx文件中混合使用格式和逻辑。通常情况如下:
if (number of passengers > 1)
include singlePassengerForm.ascx
else
include multiPassengerForm.ascx
但是想想更复杂 - 嵌套的ascx包括更多的逻辑,更大的页面等等。
我想解决这个问题,但要慢慢来。我目前正在推动的最终设计是一个非常轻的页面/控件,它没有任何逻辑,但只是从模型中选择东西(包括嵌入的ascx)。我喜欢这样的事实:页面和控件被分解成更小的部分,我想保留它。因此,这将转换为互连模型(例如:ReservationFormModel具有PassengerFormModel - 可以是SinglePassengerForm或MultiplePassengerForm)和一组互连页面,可能有一组控制器来填充模型并连接模型和页面。所以有点MVCish。基本的想法是,我想单元测试那个逻辑。
我想要做的另一件事是将其作为一个正在进行的过程来解决 - 而不是在一个大爆炸中。所以我希望能够从小开始,我只修复页面的一部分,而页面的其余部分仍然使用aspx / ascx中嵌入式逻辑和数据的旧方式。
任何有关此问题的想法/建议/经验报告都会非常感激。
我已经看到了这个答案:What is the best way to do unit testing for ASP.NET 2.0 web pages?而且:Unit Testing Legacy ASP.NET Webforms Applications 但我正在寻找更具体的东西
答案 0 :(得分:1)
如您所知,WebForm路径不是编写代码最可测试的方法。事实上,MVC模式的一个关键方面是可以更好地测试控制器。
一个简单的解决方案是将核心逻辑包含在“逻辑”类(如MVC控制器)中,并仅使用页面代码将数据绑定到控件。然后,您可以使用NUnit框架创建测试夹具和NCover来监控测试代码覆盖。