教年轻 AIoT 创业者如何从 0 到 1 实现AIoT 创业项目 了解详情
写点什么

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

  • 2012-06-19
  • 本文字数:845 字

    阅读完需:约 3 分钟

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

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

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

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

<big></big><p><asp:FormView ID="Question" runat="server" DataSourceID="QuestionDataSource" DefaultMode="Edit"><br></br> <EditItemTemplate><br></br> </EditItemTemplate><br></br> </asp:FormView> <br></br> <asp:ObjectDataSource ID="QuestionDataSource" runat="server" SelectMethod="GetQuestion" UpdateMethod="UpdateQuestion" TypeName="Survey.SurveyController" DataObjectTypeName="Survey.Question" /></p>其中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

活动推荐:

2023年9月3-5日,「QCon全球软件开发大会·北京站」 将在北京•富力万丽酒店举办。此次大会以「启航·AIGC软件工程变革」为主题,策划了大前端融合提效、大模型应用落地、面向 AI 的存储、AIGC 浪潮下的研发效能提升、LLMOps、异构算力、微服务架构治理、业务安全技术、构建未来软件的编程语言、FinOps 等近30个精彩专题。咨询购票可联系票务经理 18514549229(微信同手机号)。

2012-06-19 04:54993
用户头像

发布了 55 篇内容, 共 17.5 次阅读, 收获喜欢 0 次。

关注

评论

发布
暂无评论
发现更多内容

GOPS 全球运维大会来了,龙蜥社区邀您一起了解“系统运维”

OpenAnolis小助手

开源 操作系统 内核 龙蜥社区 GOPS全球运维大会

面试官:谈谈分布式一致性机制

Java永远的神

程序员 分布式 微服务 后端 架构师

选择低代码,帮企业数字化转型提交一份满分答卷

加入高科技仿生人

软件开发 低代码 数字化 数字转型

在生产环境中运行 grpc 服务所面临的挑战

黑客不够黑

golang gRPC

折叠屏时代的全新故事,由华为领启

脑极体

华为

新旧版本功能对比 | v1.5.0 全新升级

BinTools图尔兹

数据库 社区版 版本更新

面试还不懂Netty,看这篇文章就够了!

程序员小毕

Java 程序员 后端 Netty 架构师

OpenSea交易平台开发NFT系统部署技术

薇電13242772558

NFT

关于 IDP 的五大认知误解

SEAL安全

IdP 平台工程

“ONE”有引力,4月21日见!

博睿数据

智能运维 博睿数据 发布会 Bonree ONE

关于FTP文件传输协议说明,带你了解更详细的文件传输协议

镭速

华秋PCB生产工艺分享 | 第十一道之成型

华秋电子

NLP专栏简介:数据增强、智能标注、意图识别算法|多分类算法、文本信息抽取、多模态信息抽取、可解释性分析、性能调优、模型压缩算法等

汀丶人工智能

人工智能 自然语言处理 深度学习 关系抽取 命名实体识别

【论文解读】不和谐区域定位

合合技术团队

人工智能 图像识别 图像处理

用户需求挖掘与分析,某新零售快消品电商系统成功交付的秘诀

L3C老司机

产品 产品设计 需求分析 产品管理 用户画像

软件团队文档管理工具哪个好?

PingCode

团队管理 PingCode 企业文档管理工具

现在学C4D还是Blender好?这俩有啥区别?

Finovy Cloud

blender C4D

智慧公共厕所,重构城市公共服务的新模式@光明源智慧公厕

光明源智慧厕所

智慧城市

浪潮inBuilder低代码平台分布式微服务架构事务一致性技术解析

inBuilder低代码平台

分布式事务 低代码

PCB拼版对SMT组装的影响,华秋一文告诉你

华秋电子

封仲淹:OceanBase开源技术生态全景解析

OceanBase 数据库

数据库 oceanbase

上传了ipa但在苹果App Store中没有看到构建版本的问题

Drone CI 部署

流火

MobTech ShareSDK|分享报错怎么办

MobTech袤博科技

行业盛会丨九科信息亮相第十一届中国电子信息博览会(CITE2023),与您共享科技盛宴

九科Ninetech

苹果电脑软件应用打开出现意外退出、崩溃问题解决办法

互联网搬砖工作者

携多款产品亮相“深圳先进制造业集群展”,华秋积极探索发展机遇

华秋电子

阿里内部都在疯传!企业级Spring Boot 项目开发实战教程,我先肝了

程序知音

Java 微服务 springboot java架构 Java进阶

​ 如何处理Xcode上传IPA文件后无法在后台架构版本中显示的问题?

雪奈椰子

智慧污水处理厂Web3D管理系统 把“污水洗白”

2D3D前端可视化开发

智慧水务 智慧污水厂 智慧污水处理 污水厂三维可视化 数字孪生污水厂

Goerli测试币领不到了?还有这三个解决方法

加密先生

eth Goerli

  • 扫码添加小助手
    领取最新资料包
Navigation库使得ASP.NET Web窗体更易测试_语言 & 开发_Roopesh Shenoy_InfoQ精选文章