【发布时间】:2009-04-25 00:56:12
【问题描述】:
在哪里可以找到关于使用 ASP.NET MVC 1.0 的 TDD 的好教程?我更喜欢视频教程,但文本教程也可以。我有一个新项目即将开始,我想从右脚开始。
【问题讨论】:
标签: asp.net-mvc tdd
在哪里可以找到关于使用 ASP.NET MVC 1.0 的 TDD 的好教程?我更喜欢视频教程,但文本教程也可以。我有一个新项目即将开始,我想从右脚开始。
【问题讨论】:
标签: asp.net-mvc tdd
来自 ASP.NET 的 Storefront Videos 是必看系列。
【讨论】:
任何关于 TDD 的教程都会对 MVC 有所帮助。我做 TDD 已经有一段时间了,发现它是 MVC 中的自然过渡。我发现有一些特殊性需要解决。
您经常需要模拟 HttpContext,这意味着您需要在创建控制器后将 ControllerContext 分配给控制器,因为这是注入模拟的唯一方法。上下文将用于在控制器中提供 Session、Request 和 Response 对象(也模拟它们)。新的 HttpContextBase, HttpSessionStateBase, ... 类使这更容易做到。
由于 (1),请花一些时间将一些帮助类放在一个单独的类库中,供所有测试项目使用。这些帮助程序类应该包含提供模拟上下文的可配置(或提供特定配置的多个方法)的方法。这将有助于保持您的测试紧凑。
如果您不使用 ModelBinding(在签名中带有相应参数)进行控制器操作,则使用并分配一个 ValueProvider 来测试接受参数的方法。这将允许您使用 TryUpdateModel/UpdateModel 而无需向控制器添加代码以将请求中的数据获取到这些方法中。
使用模拟框架——如果从上面看不明显的话。如果你模拟出依赖关系,编写测试会容易得多。 IMO,编写自己的模拟是不值得的,尽管我知道其他人不同意这种观点。我想这不是 MVC 独有的,但我想我会提到它。
设置一组单独的测试,使用反射来测试是否在您的方法上设置了具有适当属性的适当属性。 MVC 大量使用属性来实现安全性和其他横切方面。这些也需要测试。
【讨论】:
查看here。强烈推荐 MVC 店面。
【讨论】:
我认为 Rob Conery 的“ASP.NET MVC Storefront Starter Kit”http://www.asp.net/learn/mvc-videos/#MVCStorefrontStarterKit 非常适合演示使用 ASP.NET MVC 的 TDD。
【讨论】: