【问题标题】:ASP.NET MVC and Test Driven DevelopmentASP.NET MVC 和测试驱动开发
【发布时间】:2010-06-29 22:00:58
【问题描述】:

我是新手.NET 程序员。我学过 C#、Windows 编程、SQL Server 2005、ASP.NET 3.5。我想问一下,开始从事需要 ASP.NET MVC 和测试驱动开发的工作对我来说是否困难或不合适。我已经拿到了《Pro ASP.NET MVC Framework》这本书,但这本书让我负担过重。那么我能做什么呢?请帮忙。

--

谢谢大家的回答!我现在更困惑 :-) 但我要与之抗争,表现出坚持学习。

【问题讨论】:

  • 困惑只是那种知道还有更多要知道但又不知道从哪里开始的感觉。阅读博客/其他人的代码/编写代码始终是开始学习的最佳场所 =)

标签: .net asp.net asp.net-mvc testing


【解决方案1】:

如果您不了解 MVC 或 TDD,并且该工作需要这两个领域的经验,那么您不太可能获得这份工作,但是如果您对自己的经验、技能和抱负持开放态度,您可以询问是否他们有任何初级职位可供您与这些领域的人一起工作,以便您学习和提升。

TL;DR 版本 =)

  1. 阅读博客
  2. 学习 TDD
  3. 构建简单的 MVC 应用程序
  4. 使用 IoC 和 ORM 扩展简单的 MVC 应用程序
  5. 通过 github 或类似方式共享简单的 MVC 应用程序

完整版

同时学习 TDD 和 MVC 是一项艰巨的工作,因为虽然 MVC 比 Web 表单更易于测试,但它的许多领域仍然非常难以测试(出站路由是立即想到的)。

一个很好的起点是查看周围的一些 .NET TDD katas,因为它们将向您展示经验丰富的 TDD 从业者如何使用 TDD 解决简单问题。您也可以自己开始练习这些 katas,以熟悉所使用的概念和方法。看看博客圈 - 有很多优秀的博主围绕 MVC 和 TDD 撰写出色的内容。

一旦您克服了最初的 TDD 障碍,就可以为自己构建一个简单的 MVC 网站 - 类似于经典的博客引擎。要减少您的初始认知负担,请保持简单:

  • 将所有内容存储在内存中的列表中,并使用简单的接口向控制器隐藏其实现 - 这意味着您可以在短期内忽略数据访问。
  • 使用测试构造函数,即 public MyController( IPostDao posts ) { ... } 并将其重载以供运行时使用 public MyController() : this( new SessionPostDao() ) {} - 这意味着您可以在短期内忽略 IoC 容器。

请始终注意,这些“捷径”只是为了降低学习曲线的陡峭程度,绝不能在生产代码中使用。

一旦您开始掌握构建简单 MVC 应用程序的窍门,就可以在其中添加一个 IoC 容器。我建议使用 Ninject,因为它具有常见 .NET IoC 容器的最佳文档,而且似乎也是最容易启动和运行的。记住要删除那些丑陋的重载构造函数,因为您正在使用 IoC 构建控制器。

接下来添加一些真正的持久性,我更喜欢 NHibernate 而不是 EF,但是 NH 学习曲线非常陡峭(即使您使用 ActiveRecord 也是如此)。 LightSpeed 是一个不错的选择,因为免费版仅限于 8 个模型类,而且使用起来非常简单,但缺点是潜在雇主可能不会使用它。

现在您有一个使用 MVC 构建的简单博客引擎,您的控制器通过 IoC 容器组装,您的持久性通过 ORM 处理(所有这些都包含在各种单元和集成测试中),您可以使用它向潜在雇主展示您知道 - 但请记住,这只是表面处理,构建 MVC 应用程序比将几个控制器、一个 IoC 和一个 ORM (例如路由、视图 hepler、过滤器、alternative view engines)连接在一起要多得多。

为了使与潜在雇主共享您的博客引擎变得更加简单,请使用免费的 github 帐户来存储您的项目,这样您就可以学习 git 以及 mvc / tdd / ioc 和 orm =)

【讨论】:

    【解决方案2】:

    您将有很多东西要学,但这通常是初级开发人员所期望的。我认为,如果您有机会与在 TDD 方面经验丰富的团队合作并可以向他们学习,那将是一个很好的机会。

    【讨论】:

      【解决方案3】:

      如果您准备好迎接重大挑战,请继续。从事情的外观来看,你是在你的头上。如果您不确定您是否可以管理,我建议您先获得更多经验。 MVC 和 WebForms 一样大,而 TDD 则更大。

      问题真的是,你想在接下来的几个月里全天候 24/7 赶上吗?

      【讨论】:

        猜你喜欢
        • 2010-12-19
        • 2010-11-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-09
        • 2012-10-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多