Ruby on Rails中的完整堆栈测试选项

时间:2010-10-01 19:03:37

标签: ruby-on-rails unit-testing testing selenium cucumber

Rails应用程序的全栈测试有很多选项。有些使用真正的浏览器,有些是无头的,有些根本不运行javascript。

您使用或推荐哪些工具?为什么?

浏览器模拟器或自动机列表:

  • Rails内置支持集成和功能测试(无JS)
  • Webrat
  • Webrat ::硒
  • Celerity(通过Culerity)
  • 的Watir
  • ...

测试DSL和框架的列表:

  • Rails默认值(断言,......)
  • 早该
  • 黄瓜
  • Capybara(用于多个浏览器模拟器的统一DSL)
  • ...

4 个答案:

答案 0 :(得分:2)

所有铁路应用都受益于良好的单位和功能测试,无论您使用的是rspec还是shoulda等,都是个人偏好的问题。我是shoulda的粉丝,主要是因为它提供的上下文块,使得设置测试场景变得更容易和更清晰。

我不认为除非您的应用程序非常重要,否则需要浏览器模拟器/自动机。我建议只使用它们来测试javascript,为此目的,驾驶真正的浏览器比模拟更好。我正在处理的应用程序非常重要,我们正在使用cucumberwatir / firewatir在Firefox中运行我们的黄瓜测试,用于我们网站上的javascript驱动函数

答案 1 :(得分:1)

在过去的几年里,我在Rails职业生涯中使用过很多东西。

目前在JRuby上开发一个非常大的Rails应用程序,测试覆盖率非常可靠,我们的堆栈如下所示。

单元测试:

  • RSpec覆盖模型,帮助程序,库和控制器。控制器覆盖率往往是非常高的水平
  • JSpec覆盖了一个使用一些非常尖端的JS和HTML 5魔法的项目

功能测试:

  • Cucumber使用Capybara和Culerity(我们刚从WebRat转换为了覆盖来自Cucumber的JS重型前端)
  • 硒现在是“遗产”并慢慢迁移到黄瓜/水豚

答案 2 :(得分:1)

在我正在进行的项目中,为了测试整个堆栈,我们使用Cucumber和capybara作为驱动程序。

前端非常重,我尝试了几个无头浏览器驱动程序(capybara-envjs和akephalos),但两者都错误地在真正的浏览器中传递了测试失败。

答案 3 :(得分:1)

我正在使用Cucumber + Capybara结合使用selenium-webdriver和机架测试驱动程序。 Capybara很好地抽象了由selenium-webdriver驱动的浏览器内测试之间的区别,这些测试实际上可以测试JavaScript在浏览器中的工作情况,但需要一段时间才能运行并测试只针对由控制器/动作,运行速度更快,但不测试JavaScript。这意味着可以在浏览器中运行同一组场景和步骤定义,而无需维护重复的步骤定义集。