如何使用Ruby on Rails开始使用TDD?

mar*_*cgg 167 testing tdd ruby-on-rails

我熟悉这些概念(在大学里参加测试课程),但我不知道如何真正使用它们,因为我从未参与过"真正的"TDD项目.

我即将开始使用Ruby on Rails开发项目(最有可能使用2.3).此应用程序将用于管理数据,用户和一些文件.一开始不会太复杂,但在接下来的6个月内可能会扩展很多,所以我觉得现在是进入TDD的最佳时机.

我对如何做到这一点有一个基本的想法,但我仍然需要一些指示和建议:

  • 我应该阅读什么Ruby on Rails TDD 101文章?

  • 我需要测试什么?

  • 我应该使用什么gem /插件?

  • 我应该使用rspec吗?别的什么?

  • 一旦我完成了所有测试课程,我该如何进行部署?(例如:持续整合)

  • TDD到底耗时多少?

  • 我是否需要阅读一本关于此的书,或者我可以通过玩它并阅读在线教程来获得所有内容吗?如果我需要读一本书,那本书是什么?


我喜欢用例子学习,所以有人可以告诉我如何去采取TDD方法来解决这个问题:

我有公司.我有联系人.联系人可以链接到1家公司.公司可以拥有多个联系人.我想创建方法来创建联系人,公司和公司的联系人.

您不必在答案中使用此示例,但它会有所帮助:)

ez.*_*ez. 202

我应该阅读什么Ruby on Rails TDD 101文章?

我将从测试rails应用程序的指南开始.

此外Railscast在如何使用不同的测试工具,一些优秀的截屏.

我需要测试什么?

我将从模型开始,因为它们很容易测试.简单的规则是您需要覆盖测试中的每个if语句.

您应该测试方法的目的(以确保它按预期运行)以及所有边缘情况.

另外,请确保不要过度测试.

我应该使用什么gem /插件?我应该使用rspec吗?别的什么?

当你开始时,只需使用Test Unit.您可以使用rspeccucumber熟悉基础知识.

Autotest如果你想要真正的测试驱动,是一个很好的工具.但这不是必需的"好事".

一旦我获得了所有测试课程,我该如何进行部署?

对这个问题不确定.您通常不会部署测试.完成所有测试类后,输入"rake test"即可运行所有测试.

TDD到底耗时多少?

它真的节省了时间.如果你喜欢迷宫拼图,你知道如果你从完成开始,它几乎总是更容易解决.与TDD相同.没有测试驱动,你一直在想'我下一步该做什么'.使用Test Driven,测试将告诉您下一步该做什么(如果逻辑不存在则会中断,因此您只需要修复损坏的部分).此外,您可以减少错误,从长远来看,这将节省您大量的时间.

我是否需要阅读一本关于此的书,或者我可以通过玩它并阅读在线教程来获得所有内容吗?如果我需要读一本书,那本书是什么?

你不需要一本书.学习任何东西最有效的方法是:做到这一点.遇到问题或问题后,请返回本书或在线资源.这也很敏捷.

在您的示例中,需要测试的内容包括:联系人可以链接到1个公司,公司可以拥有多个联系人,创建创建联系人的方式以及将联系人链接到公司.

class CompanyTest <Test::Unit
    def test_relationship # test associations/relationships
        c = companies(:some_company)
        assert_equal [a list of contacts], c.contacts # make sure a company can have multiple contacts
    end
end

class ContactTest<Test::Unit
   def  test_relationships
        c = contact(:some_contact)
        assert_equal some_company, c.company # make sure the contact link to 1 company
   end

   def  test_create/add
        # test create contacts, here you need to make sure the contact is created correctly, and linked to company correctly
   end
end
Run Code Online (Sandbox Code Playgroud)

  • 该文章的链接已被删除,但在此处找到:http://web.archive.org/web/20100325215651/http://bloritsch.d-haven.net/articles/2008/07/03/test-driven - 发展-101 (3认同)

Wol*_*old 13

我制作了一个6集的视频系列,在2010年夏天在旧金山作为公共课程教授.该材料涵盖了使用RSpec 1.3在Rails 2.3中的测试和开发人员效率.略有过时,但主要概念适用于Rails 3和Rspec 2.x

http://www.rubyfocus.biz/class_video/2010/07/19/rails_tdd_class_1.html


siv*_*udh 9

我推荐这本书:Ruby on Rails教程.我差不多完成了它.该书采用TDD的本书.试试看!


And*_*ell 5

TDD首先是编写测试.这基本上迫使您在编写应用程序代码之前编写自己的客户端.这个循环通常是为不存在的API编写测试,运行测试期望它失败,编写API代码,再次运行测试并确保它通过.然后编写下一个测试...依此类推.

您可能也对此Rails指南感兴趣.


Mik*_*ike 5

我用 :

  1. Shoulda和rspec进行测试
  2. 摩卡嘲笑
  3. Factory_girl为工厂
  4. parallel_specs用于更快的测试
  5. metric_fu用于代码分析