黄瓜step_definitions中未定义的webrat方法

时间:2010-08-23 08:56:25

标签: ruby-on-rails-3 cucumber webrat

当我运行我的功能时,我收到此错误:

undefined method `visit' for #<Cucumber::Rails::World:0x81b17ac0> (NoMethodError)

这是我Gemfile的相关部分。

group :development, :test do
  gem "rspec-rails", ">= 2.0.0.beta.19"
  gem "cucumber"
  gem "cucumber-rails", ">= 0.3.2"
  gem 'webrat', ">= 0.7.2.beta.1"
end

相关的step_definition(虽然我不认为这很重要)

When /^I create a movie Caddyshack in the Comendy genre$/ do
  visit movies_path
  click_link "Add Movie"
  fill_in "Title", :with => "Caddyshack"
  check "Comedy"
  click_button "Save"
end

在env.rb中,我有以下Webrat配置:

# […]
require 'webrat'
require 'webrat/core/matchers'

Webrat.configure do |config|
  config.mode = :rails
  config.open_error_files = false # Set to true if you want error pages to pop up in the browser
end
# […]

我在这里缺少什么?

3 个答案:

答案 0 :(得分:16)

我必须将config.mode设置为:rack而不是:rails

# […]
require 'webrat'
require 'webrat/core/matchers'

Webrat.configure do |config|
  config.mode = :rack
  config.open_error_files = false # Set to true if you want error pages to pop up in the browser
end
# […]

现在按预期工作。

答案 1 :(得分:1)

Paul Nelligan尝试将此添加到env.rb以修复错误:“没有这样的文件加载 - action_controller / integration”

World(Webrat::Methods)
World(Webrat::Matchers)

答案 2 :(得分:1)

我也在两个不同的场合遇到过这个错误:第一个实例调整confg.mode解决了问题;然而,第二次,在经历了很多挫折之后,我发现了一个链接,表明捆绑包的错误版本可能是罪魁祸首。更新它解决了这个问题。