asp.net-mvc – 使用ASP.NET MVC测试驱动的开发 – 从哪里开始?
我已经阅读了很多关于测试驱动开发(TDD)的知识,我发现基于个人经验非常有吸引力的原则。
目前,我正在开发一个我参与的初创项目的网站,我想尝试将TDD付诸实践。 所以…我在Visual Studio 2010中创建一个空白的解决方案,添加一个ASP.NET MVC网站项目和一个测试项目。 我还添加了一个名为“Domain”的类库,用于我的域对象,并为其添加了一个测试项目。 现在我想知道从哪里开始在做任何事情之前,我应该写一个测试?问题是 – 我应该开始为域对象编写测试吗?如果是这样,究竟应该测试什么,因为域对象还不存在? 或者我应该从网站项目开始,并为此编写测试?如果是这样,我该怎么写一个测试?家庭控制器/索引动作? 解决方法
我通常首先为我要开发的应用程序收集一组故事。从那里我生成一个域模型,通常在“纸”上。我组织了我将要实施的故事,并开始在DB中为第一组故事创建域模型。
一旦我有初始的DB,那么我使用一个ORM,在我的例子中,LINQ to SQL,将DB表映射到一组初始类。我通常不会单独测试生成的代码,所以这给了我相当多的代码作为开始的基础。然后我创建一个存根方法,它抛出一个未实现的异常,以实现我正在使用的第一个域类的一个功能。通常,我从验证逻辑开始。一旦你有了存根方法,那么你可以使用VS右键菜单为这个方法创建一个或多个单元测试。然后你就在路上。 一旦我完成了第一个故事的域对象,我就开始使用MVC方面。首先,我将为第一个视图创建视图模型。这些点通常只是一个空的容器类。然后,我将创建视图,并强烈地将其添加到视图模型中。我将开始清理视图,根据视图的需要向视图模型添加属性。请注意,由于视图模型仅仅是一个容器,通常不存在与其相关联的单元测试。然而,它将用于后续的控制器测试。 一旦视图完成(或至少我的初始概念完成),然后我创建存根控制器动作或动作,同样,存根方法只是抛出一个未实现的异常。这足以让它编译,让我用这些工具为它创建单元测试。我根据需要继续测试方法,并确保其适用于给定输入,并产生适当的视图模型。如果该方法可以产生多个视图模型,即渲染多个视图,我可以遍历创建视图模型/视图/控制器代码的过程,直到故事完成。 必要时重复,直到您的故事实施,一路重构。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – 无法在Global.asax上加载类型MvcApplicatio
- asp.net – 在线.Net编码
- asp.net – 当数据绑定控件被绑定两次时,如何避免重复项?
- asp.net-mvc-3 – MVC 3 knockoutjs:在使用EditorFor作为布
- asp.net – 在Azure中的不同实例(可能在Web场中)中更改Sess
- 如何在asp.net会员中手动更改密码?
- 【DevExpress v17.2新功能预告】DevExpress ASP.NET Schedu
- 如何在ASP.NET下拉列表的每个ListItem中保存第三个值?
- Asp.net – 尝试访问工作网页时出错
- asp.net – 来自ASHX处理程序的Sever.Transfer,HttpContext
- asp.net – 如何格式化C#代码并将其转换为HTML
- asp.net-core-mvc – MVC 6配置验证
- asp.net – 当我在gridview中进行排序时触发了Gr
- jQuery Ajax方法调用 Asp.Net WebService 的详细
- 体验使用gcServer =“true”为.NET设置垃圾回收器
- asp.net-mvc – asp.net mvc 3 webgrid排序依然?
- asp.net – 要检查字符串值是否具有数值或C#
- asp.net – SignalR(Hub)可以发送除信号制作者之
- asp.net – 在开发系统上禁用OutputCache
- asp.net-core – 如何在VS2017 final中定位多个框