ASP.NET MVC与测试驱动开发

ASP.NET MVC与测试驱动开发,.net,asp.net,asp.net-mvc,testing,.net,Asp.net,Asp.net Mvc,Testing,我是新手.NET程序员。我学过C#,Windows编程,SQLServer2005,ASP.NET3.5。我想问,对于我来说,开始从事一份需要ASP.NETMVC和测试驱动开发的工作是困难还是不合适。我已经获得了《Pro ASP.NET MVC框架》一书,但这本书让我负担过重。那我该怎么办?请帮忙 -- 谢谢大家的回答!我现在更困惑了:-)但我要与之抗争,表现出坚持不懈的学习。你将有很多东西要学,但这通常是对初级开发人员的期望。我认为,如果你有机会与一个在TDD方面经验丰富的团队一起工作,并能从

我是新手.NET程序员。我学过C#,Windows编程,SQLServer2005,ASP.NET3.5。我想问,对于我来说,开始从事一份需要ASP.NETMVC和测试驱动开发的工作是困难还是不合适。我已经获得了《Pro ASP.NET MVC框架》一书,但这本书让我负担过重。那我该怎么办?请帮忙

--


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

你将有很多东西要学,但这通常是对初级开发人员的期望。我认为,如果你有机会与一个在TDD方面经验丰富的团队一起工作,并能从他们身上学习,那将是一个很好的机会。如果你准备迎接一个巨大的挑战,一定要继续。从事物的外观来看,你是在你的头上。如果你不确定你能应付,我建议你先多积累一些经验。MVC和WebForms一样大,TDD甚至更大


问题是,你想在接下来的几个月里全天24小时不间断地赶上来吗?

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

TL;DR版本=)

  • 阅读博客
  • 学习TDD
  • 构建简单的MVC应用程序
  • 使用IoC和ORM扩展简单的MVC应用程序
  • 通过github或类似工具共享简单的MVC应用程序
  • 完整版本

    同时学习TDD和MVC是一项艰巨的工作,因为尽管MVC比webforms更易于测试,但仍有许多领域极难测试(出站路由是一个立即浮现在脑海中的问题)

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

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

    • 将所有内容都存储在内存中的列表中,并使用一个简单的界面对控制器隐藏其实现——这意味着您可以在短期内忽略数据访问
    • 使用测试构造函数,即
      public MyController(IPostDao posts){…}
      ,并将其重载以供运行时使用
      public MyController():this(new SessionPostDao()){}
      -这意味着您可以在短期内忽略IoC容器
    请始终注意,这些“捷径”只是为了降低学习曲线的陡峭度,不应在生产代码中使用

    一旦你开始掌握构建一个简单MVC应用程序的诀窍,在混合中添加一个IoC容器。我建议使用Ninject,因为它拥有通用.NETIOC容器的最佳文档,而且似乎是最容易安装和运行的。记住删除那些丑陋的重载构造函数,因为您正在使用IoC构建控制器

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

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


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

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