【问题标题】:What are the most important things to test in an ASP.NET MVC application?在 ASP.NET MVC 应用程序中测试最重要的事情是什么?
【发布时间】:2009-02-09 05:42:33
【问题描述】:

关于 ASP.NET MVC 单元测试的大多数 stackoverflow 帖子都讨论了特定问题或要测试的特定事物,例如 testing HtmlHelpers。关于最佳实践主题的其他人有surprisingly few answers。在我看来,我看过的可用视频是 completely useless - 令人兴奋的是 long(当你观看了 1.5 小时但没有学到任何东西时)。

我想从实际这样做的人那里知道:

  • 首先要测试的最重要的事情是什么
  • 什么不需要测试(我这么说,但我不是在 100% 之后)
  • 什么是测试以及您是如何克服难测试的。
  • 重构中可能会出现测试无法捕获的问题。

我对如何进行单元测试并不陌生——但我对实际始终如一地进行测试还是很陌生。我非常感谢从单元测试 ASP.NET MVC 方面的专家那里学到的经验教训。

我真的在寻找您可能只有在尝试过之后才能发现的具体内容——而不是像“使用接口”这样的一般性建议——当然欢迎任何建议。

哦,假设我决定使用 Microsoft 的单元测试 - 只是因为它已经存在。我认为所有答案都适用于所有测试框架。

【问题讨论】:

    标签: asp.net-mvc unit-testing


    【解决方案1】:
    • 测试你的路由。当你在你的视图中生成一个 URL 时,你应该使用 RouteLink 来消除歧义,但是当你提交一个 URL 时,你依赖于路由系统来选择正确的路由。因此,请测试您支持的 URL 模式是否确实返回了正确的路由。
    • 测试您的控制器操作。使用模拟存储库,并测试手动调用每个操作是否具有您期望的结果。
    • 测试模型中的所有业务逻辑。这很明显,与非 MVC 应用程序几乎没有区别。
    • 测试您编写的任何自定义视图助手。虽然我一般不会对视图进行单元测试,但视图助手是不同的。
    • 测试您的 JavaScript。有针对此的单元测试框架,测试 JavaScript 非常简单,几乎不需要这样的框架。但是测试 JavaScript 非常重要,因为该语言倾向于向您隐藏错误。
    • 如果您编写了任何自定义模型绑定器,则需要特别注意它们。一方面,通过单元测试调试模型绑定器比在应用程序中“实时”调试模型绑定器要容易得多。

    【讨论】:

      【解决方案2】:

      我想详细说明测试控制器操作:

      • 验证您获得了正确的ActionResult。重定向不同于视图。
      • 还要验证预期的视图名称。如果你依赖默认视图,它应该是空的。
      • 验证您获得了正确的视图模型。
      • 验证您操作中的所有分支。将它们保持在最低限度,并在它们增长过多时将它们转移到帮助器/服务中。

      简而言之,验证您将使用的 ActionResult 中的任何内容。

      【讨论】:

        【解决方案3】:

        我不认为答案必须特定于 ASP.NET MVC。 与任何其他应用程序一样,您必须测试的最重要的事情是您的核心逻辑。 也就是说,您的模型代码和您的控制器操作。

        【讨论】:

        • 我这样问是有原因的。例如,有些事情与路由、特定的 actionresult 类有关,已经使用它测试一段时间的人可能能够提供建议
        猜你喜欢
        • 1970-01-01
        • 2010-09-12
        • 1970-01-01
        • 1970-01-01
        • 2012-08-03
        • 2010-11-01
        • 1970-01-01
        • 2010-10-30
        相关资源
        最近更新 更多