如何在Rails 3项目的Cucumber中正确执行Capybara @javascript标签?

jus*_*see 1 ruby bdd ruby-on-rails cucumber capybara

我在一个新的Rails 3项目中为Capybara换了Webrat.我在这里浏览了Tim Riley的精彩帖子(http://openmonkey.com/articles/2010/04/javascript-testing-with-cucumber-capybara),并克隆了他的存储库,执行了示例黄瓜功能,并看到了浏览器窗口打开.所以整个Cucumber,Capybara,Selenium堆栈似乎在这种情况下运行良好.

但是,如果我创建一个新的Rails 3项目,运行设置一个类似的示例项目,并使用@javascript注释一个场景,浏览器窗口不会触发,而Cucumber场景只是失败了,通常Command failed with status (1) event(在失败的情况下)或者未决的步骤,Cucumber通过设计触发CI工具的好处).

除了Capybara提供的@javascript功能外,所有其他功能都可以正常工作.

我错过了一些非常明显的东西吗?BDD新手是否有办法更深入地研究问题(堆栈跟踪只显示Cucumber失败时的标准rake错误).

  • rvm 1.9.2-head
  • gem'rail','3.0.0.rc'
  • 宝石'黄瓜'
  • 宝石'黄瓜 - 铁轨'
  • 宝石'capybara'
  • 宝石'culerity'
  • gem'celeler',:require => nil

jus*_*see 5

问题实际上是使用cucumber-rails并且缺少对DatabaseCleaner的依赖:http://github.com/aslakhellesoy/cucumber-rails/issues#issue/36

将@javascript标记添加到黄瓜功能时会出现此问题.默认情况下,黄瓜选项会抑制警告,这些警告会提醒我这个事实.通过更新config/cucumber.yml到:

std_opts = "--format #{ENV['CUCUMBER_FORMAT'] || 'pretty'} --strict --tags ~@wip"

运行黄瓜时显示错误: uninitialized constant DatabaseCleaner (NameError)

这种情况下的快速修复是添加gem 'database_cleaner'到项目中Gemfile.