Ruby on Rails全栈测试的选项

6

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

您使用或建议使用哪些工具?为什么?

浏览器模拟器或自动化工具清单:

  • Rails集成和功能测试的内置支持(不包含JS)
  • Webrat
  • Webrat::selenium
  • Selenium
  • Celerity(通过Culerity)
  • Watir
  • ...

测试DSL和框架清单:

  • Rails默认值(assertions,...)
  • Shoulda
  • Cucumber
  • Capybara(多个浏览器模拟器的统一DSL)
  • ...

真遗憾...都是好答案,但哪个最好呢? - Daniel Beardsley
4个回答

2
所有的Rails应用程序都会受益于良好的单元和功能测试覆盖率,无论您使用rspec还是shoulda等,这主要取决于个人喜好。我更喜欢shoulda,主要是因为它提供了上下文块,使设置测试场景变得更加容易和清晰易懂。
我认为除非您的应用程序涉及大量Javascript,否则不需要浏览器模拟器/自动化工具。我建议仅在测试Javascript时使用它们,而且为此目的,使用真实浏览器比模拟更好。我现在正在开发的应用程序涉及大量Javascript,我们正在使用cucumber以及watir/firewatir在Firefox中运行我们的cucumber测试,以测试我们网站上的Javascript驱动功能。

1

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

目前正在使用JRuby开发一个相当大的Rails应用程序,拥有非常扎实的测试覆盖率,并且我们的技术栈如下所示。

单元测试:

  • RSpec 覆盖模型、助手、库和控制器。控制器覆盖范围往往是高级别的
  • JSpec 覆盖使用一些非常前沿的JS和HTML 5技术的项目

功能测试:

  • Cucumber 使用Capybara和Culerity进行测试(我们刚刚从WebRat转换过来,以便从Cucumber获得对JS-heavy前端的覆盖)
  • Selenium现在已经过时,并正在逐渐迁移到cucumber / capybara上

1
在我目前工作的项目中,为了测试全栈,我们使用Cucumber和capybara作为驱动程序。前端非常依赖JavaScript,我尝试过几个无头浏览器驱动程序(capybara-envjs和akephalos),但两者都会错误地导致测试失败,而这些测试在真实浏览器中是通过的。

1

我正在使用Cucumber + Capybara与selenium-webdriver和rack-test driver的组合。Capybara很好地抽象出了在浏览器中由selenium-webdriver驱动的测试与可以实际测试JavaScript在浏览器中工作但需要一段时间运行的测试之间的区别,以及只针对控制器/操作生成的HTML运行的测试,这些测试运行速度更快但不测试JavaScript。这意味着可以在浏览器中或不在浏览器中运行相同的场景和步骤定义,而无需维护重复的步骤定义集。


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