开发者

Capybara select statement not working with Rspec

Using Capybara with Rails 3, Rspec and Cucumber,

When I use the select statement, such as

    select("Unspecified", :from=> 'record_family_')

I get an error, wrong number of arguments (2 for 3). Likewise, if I omit the second argument, I get wrong number of arguments (1 for 3). This happens whether I'm using RSpec or Cucumber. If I switch to Webrat, everything works.

Details: Rails 3.0.4, rspec-core 2.5.1, rspec-rails 2.5.0, capybara 0.1.4.2, rack 1.2.1

The first few lines of the stack trace (with the path simplified) are:

wrong number of arguments (1 for 3) (ArgumentError)
actionpack-3.0.5/lib/action_view/helpers/form_options_helper.rb:131:in `select'
capybara-0.4.1.2/lib/capybara/dsl.rb:104:in `select'
step_definitions/sim_db_steps.rb:412:in `block in <top (required)>'
cucumber-0.10.0/lib/cucumber/core_ext/instance_exec.rb开发者_JAVA百科:48:in `instance_exec'
cucumber-0.10.0/lib/cucumber/core_ext/instance_exec.rb:48:in `block in cucumber_instance_exec'
cucumber-0.10.0/lib/cucumber/core_ext/instance_exec.rb:69:in `cucumber_run_with_backtrace_filtering'
cucumber-0.10.0/lib/cucumber/core_ext/instance_exec.rb:36:in `cucumber_instance_exec'
cucumber-0.10.0/lib/cucumber/rb_support/rb_step_definition.rb:62:in `invoke'

Any ideas?


Thanks to Jonas Niklas for pointing out the problem, a name space issue. I had indirectly included ActionView::Helpers::FormOptionsHelper into the test cases so that the ActionView select was conflicting with the Capybara one.


I had a name space issue also with select (it was using kernel instead of page.select). I ended up having to change this:

RSpec.configure do |config|
  config.include Capybara::DSL
  config.include ActionView::Helpers::FormOptionsHelper
end

To this:

RSpec.configure do |config|
  config.include ActionView::Helpers::FormOptionsHelper
  config.include Capybara::DSL
end

Just the ordering of the includes fixed it.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜