1

我在一个新的 Rails 3 项目中将 Webrat 换成了 Capybara。我在这里浏览了 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-头
  • 宝石'导轨','3.0.0.rc'
  • 宝石“黄瓜”
  • 宝石'黄瓜导轨'
  • 宝石“水豚”
  • 宝石'Culerity'
  • gem 'celerity', :require => nil
4

4 回答 4

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.

于 2010-08-18T10:12:38.483 回答
1

Capybara 是“懒惰”的,因为它会在实际需要时首先打开浏览器窗口。如果您实际上正在做一些需要浏览器的事情,Capybara 不会打开浏览器。

于 2010-08-15T10:47:56.120 回答
1

也许你还没有安装 mongrel gem。浏览器自动化在某种程度上无法与 webrick 一起使用,我也经历过与您在此处描述的相同的静默失败。

添加

宝石'杂种','> = 1.2.0.beta.1'

到我的 Gemfile 解决了它。

于 2010-08-17T17:20:05.660 回答
1

我制作了一个关于如何配置的示例应用程序:github.com/lailsonbm/contact_manager_app/

于 2010-09-14T19:35:13.870 回答