繁体   English   中英

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

[英]Options for full stack testing in Ruby on Rails

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

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

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

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

测试DSL和框架的列表:

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

所有轨道应用程序都受益于单元和功能测试的良好覆盖,无论您使用rspec还是shoulda等,主要是个人偏好问题。 我的粉丝shoulda大多为它提供上下文块,从而建立测试方案更容易和更清晰理解。

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

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

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

单元测试:

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

功能测试:

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM