使用带有 Rails 脚手架的测试驱动开发 (TDD)
Posted
技术标签:
【中文标题】使用带有 Rails 脚手架的测试驱动开发 (TDD)【英文标题】:Using test-driven development (TDD) with Rails scaffolding 【发布时间】:2014-02-14 17:22:56 【问题描述】:我希望能更好地理解在 Rails 4 应用程序中使用 TDD 的过程。
迄今为止我发现的关于该主题的最佳帖子是15 TDD steps to create a Rails application。它建议遵循以下步骤:
搭建模型 为模型创建单元测试 --> 测试失败 为模型创建迁移 --> 测试通过 用所需的动作搭建控制器 为控制器创建功能测试 --> 测试失败 将代码添加到控制器操作 --> 测试通过 为视图创建功能测试 --> 测试失败 创建视图 --> 测试通过这种方法带来了比rails g scaffold Foo
更多的工作。但是使用脚手架会导致测试(如果已构建)会通过,这违反了核心 TDD 原则。
我还了解到不应测试框架提供的功能(例如,validates_presence_of
的单元测试)。
这让我想问:我应该跳过对脚手架生成的代码的单元和功能测试,只测试我的自定义,还是应该遵循博客文章作者使用的逐层模式?
【问题讨论】:
你想用脚手架做什么?它们只生成最基本的代码来执行 CRUD 操作,生成的测试远不值得使用。 (阅读您提供的链接:它是从 2007 年开始的,使用的 Rails 版本甚至比 Rails 2 还要早,并且没有提及使用脚手架?) @yerforkferchips:是的,我意识到脚手架是相当基础的,它的测试没有用。但是对于 Rails 4,这是一个不错的起点,可以节省时间并消除遗漏。是的,这篇文章很老了,但仍然描述了一个过程。我引用这篇文章作为与脚手架和可能的工作流程的对比。 【参考方案1】:如果我正确理解您的问题,这篇文章会提供一个措辞非常优美的答案:
http://robots.thoughtbot.com/unpopular-developer-5-stop-unit-testing-your-scaffold
本质上,它的信息是您应该只测试与脚手架生成的行为有偏差的地方,因为脚手架生成的测试太简单而没有用处。
【讨论】:
以上是关于使用带有 Rails 脚手架的测试驱动开发 (TDD)的主要内容,如果未能解决你的问题,请参考以下文章
为啥 Rails 脚手架生成器只是忽略了我的 config/initializers/inflections.rb?