黄瓜step_definitions中未定义的webrat方法

Nil*_*ann 9 webrat cucumber ruby-on-rails-3

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

undefined method `visit' for #<Cucumber::Rails::World:0x81b17ac0> (NoMethodError)
Run Code Online (Sandbox Code Playgroud)

这是我的相关部分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
Run Code Online (Sandbox Code Playgroud)

相关的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
Run Code Online (Sandbox Code Playgroud)

在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
# […]
Run Code Online (Sandbox Code Playgroud)

我在这里缺少什么?

Nil*_*ann 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
# […]
Run Code Online (Sandbox Code Playgroud)

现在按预期工作.

  • 如果人们不知道这将在features/support/env.rb中进行编辑 (5认同)
  • 这个解决方案对我有用......但是,为什么需要这个?我认为rails生成器应该生成正确的东西,无论这是一种模式:rails([webrat readme](https://github.com/brynary/webrat#readme)似乎说是正确的,顺便说一句)或:机架...但似乎并非如此.有谁知道为什么? (2认同)