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

时间:2011-01-07 04:52:41

标签: ruby-on-rails unit-testing testing ruby-on-rails-3

我是Rails测试的新手。我决定学习测试驱动开发,因此我正在研究如何在轨道中进行测试。

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

  1. 早该
  2. 摩卡
  3. Rspec的
  4. 黄瓜
  5. 工厂女孩
  6. 现在我很困惑如何继续前进。 我需要学习的这些工具的最佳组合是什么?我在哪里可以找到学习这些资源的资源?

    我正在使用Rails 3.0构建应用程序

3 个答案:

答案 0 :(得分:18)

  

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

先测试。

更严重的是,您列出了许多旨在执行不同操作的不同工具。

  • Shoulda是用于运行测试的测试框架,以及用于编写测试的一组匹配器和断言。
  • Mocha是一个模拟和存根库。
  • Rspec是一个包含模拟工具和匹配器的测试框架。
  • Cucumber是编写功能测试的框架。
  • Factory Girl是用于构建测试中使用的域对象的框架。

其中,Shoulda或Rspec可能会取代Test :: Unit,而其他都提供了不同测试领域的工具。您需要哪一个取决于您认为编写测试更容易和更有效的方法。

对于曾经测试过的人::单位单元测试并且有兴趣学习其他工具,我建议如下。

如果您有一个使用Test :: Unit的现有项目,请考虑添加Mocha的模拟和存根,看看是否允许您更轻松地编写重点单元测试。如果您已经安装了夹具,请考虑使用Factory Girl来生成工厂,而不是添加新的模型对象,并再次查看是否发现这样可以使您的测试更易于管理和维护。如果你有一套可靠的单元测试已经考虑使用Cucumber编写一些更高级别的功能测试来开始在测试中捕获用户故事并在端到端测试你的应用程序。

如果您要开始一个新项目,那么请从Rspec和Factory Girl开始。 Rspec将为您介绍一种与Test :: Unit完全不同的测试方式,但您仍然会编写相当熟悉的单元测试,并提供存根,模拟和匹配器,这样您就可以在没有太多新功能爆炸的情况下深入测试你项目中的宝石。 Factory Girl将为您提供一种方便的方法来构建域对象,因为您的测试需要它们。在这两者之间,您应该能够获得一堆新的测试技巧,同时仍然使用您常用的单元测试工作流程。

答案 1 :(得分:3)

您是否查看了Michael Hartl的RoR 3教程?

Ruby on Rails 3 Tutorial by Michael Hartl

他已经整合了一个很好的Rails 3教程,以及RSpec和Factory Girl的一些基本用法。

答案 2 :(得分:1)

我个人在我的应用程序中使用Cucumber,RSpec和Factory Girl。至于资源,我正在写一本名为Rails 3 in Action的书,它使用这些工具(当然还有Rails本身)来开发一个应用程序。