什么是测试Rails应用程序的最佳方法?

8

我对Rails中的测试很陌生。我决定学习测试驱动开发,因此正在研究如何在rails中进行。

我开始使用Test::Unit,很快就知道有更好的工具和测试框架可用。我听说过以下工具:

  1. Shoulda
  2. Mocha
  3. Rspec
  4. Cucumber
  5. Factory Girl

现在我很困惑该如何继续。 哪种工具组合是最好的?还有哪些资源可以学习这些工具?

我正在Rails 3.0中构建应用程序。


好问题。希望我们能得到一些非常好的答案! - Zabba
2
挑选一个像Spree或者http://www.opensourcerails.com/中的其他项目一样大小适中的真实应用,尝试去理解应用程序中的测试。当然,为了理解其中的一些测试,你需要查看实际的源代码。在我看来,这也是成为更好的Rails开发者的绝佳方式。 - Zabba
3个回答

18
什么是测试Rails app的最佳方法?
首先是测试。更认真地说,您列出了许多旨在执行不同任务的工具。
Shoulda是一个测试框架,用于运行测试和编写测试的一组匹配器和断言。 Mocha是一个mocking和stubbing库。 Rspec是一个测试框架,包括mocking工具和matchers。 Cucumber是一个编写功能测试的框架。 Factory Girl是一个构建测试中使用的域对象的框架。
其中应该选用Shoulda或Rspec来替换Test :: Unit,而其他工具为测试的不同领域提供了工具。您需要哪一个取决于您认为什么可以使编写测试更容易和更有效。
对于习惯于使用Test :: Unit单元测试并有兴趣学习其他工具的人,我建议如下: 如果您有使用Test :: Unit的现有项目,请考虑添加Mocha的mocking和stubbing,看看是否可以更轻松地编写专注的单元测试。如果您已经有了夹具,请考虑使用Factory Girl生成工厂,以便在添加新模型对象时使用,并再次查看是否发现这使您的测试更易于管理和维护。如果您已经拥有一套稳定的单元测试,则考虑使用Cucumber编写一些更高级别的功能测试,以开始以测试方式捕获用户故事并对您的应用程序进行端到端测试。
如果您正在开始一个新项目,则从Rspec和Factory Girl开始。 Rspec将为您介绍与Test :: Unit非常不同的测试样式,但您仍将编写相当熟悉的单元测试,并且它提供了存根、Mock和匹配器,让您能够在没有太多新的宝石爆炸的情况下深入测试。 Factory Girl将为您提供一种方便的方式来构建域对象,因为您的测试需要它们。在这两者之间,您应该能够掌握许多新的测试技巧,同时仍然使用您通常的单元测试工作流程。

3
有没有关于这些的教程可供学习。我已经按照你的建议开始学习 rspec,但在启动方面遇到了很多麻烦。我有一个现有的应用程序需要添加 Rspec,我该怎么做? - Avinasha Shastry

3

1

就我个人而言,我在我的应用程序中使用Cucumber、RSpec和Factory Girl。至于资源方面,我正在撰写一本名为Rails 3 in Action的书籍,该书介绍了如何使用这些工具(当然还有Rails本身)来开发应用程序。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接