BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Navigation库使得ASP.NET Web窗体更易测试

| 作者 Roopesh Shenoy 关注 0 他的粉丝 ,译者 高翌翔 关注 0 他的粉丝 发布于 2012年6月20日. 估计阅读时间: 3 分钟 | 如何结合区块链技术,帮助企业降本增效?让我们深度了解几个成功的案例。

Navigation是一个库,通过将CRUD[1]逻辑从后置代码文件中分离出来,从而使得ASP.NET Web窗体更易测试。Graham Mendick的文章“用Navigation进行单元测试”介绍了一些相关功能、以及如何编写单元测试。

这个库是做什么的?它使得

  • 控件将被绑定到位于单独类中的控制器方法上。
  • 导航绑定(Navigational binding)

所有位于aspx页面的标记。例如,用于将FormView控件绑定到其控制器方法(controller method)的标记将如下所示——

<asp:FormView ID="Question" runat="server" DataSourceID="QuestionDataSource" DefaultMode="Edit">
<EditItemTemplate>
</EditItemTemplate>
</asp:FormView>
<asp:ObjectDataSource ID="QuestionDataSource" runat="server" SelectMethod="GetQuestion" UpdateMethod="UpdateQuestion" TypeName="Survey.SurveyController" DataObjectTypeName="Survey.Question" />

其中GetQuestionUpdateQuestion是在名为SurveyController的外部类中实现的控制器方法——它们不能直接访问控件,而是通过Navigation库将数据传递给它们。Survey.Question引用一个在本示例中使用的视图模型(ViewModel)来传输数据。

为何说它可以简化单元测试?因为现在,业务逻辑位于单独的、无任何web特定行为的POCO[2]类中。所以说它使得测试变得更容易。更多详细信息请参阅此文

尽管我们已在InfoQ上提到过,WebForms 4.5获得model binders(模型联编程序)开箱即用(out-of-the-box)——然而这个库允许将控制器方法放置到单独的类中,从而取代后置代码文件,这对于可测试性和可重用性似乎更好。如果您有兴趣,可以下载Navigation NerdDinner演练代码

译注

[1] CRUD,即Create, Read, Update, Delete的首字母缩写,指数据库操作中的创建、读取、更新、删除。

[2] POCO,即Plain Old CLR Object的缩写,简单传统CLR(公共语言运行库)对象,更多详细信息请参阅维基百科

查看英文原文:Navigation Makes ASP.NET WebForms More Testable

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT