Capybara选择声明不与Rspec合作

时间:2011-03-15 12:46:06

标签: select rspec cucumber capybara

将Capybara与Rails 3,Rspec和Cucumber一起使用,

当我使用select语句时,例如

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

我收到错误wrong number of arguments (2 for 3)。同样,如果我省略第二个参数,我会得到wrong number of arguments (1 for 3)。无论我使用的是RSpec还是黄瓜,都会发生这种情况。如果我切换到Webrat,一切正常。

详细信息:Rails 3.0.4,rspec-core 2.5.1,rspec-rails 2.5.0,capybara 0.1.4.2,rack 1.2.1

堆栈跟踪的前几行(简化路径)是:

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: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'

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

感谢Jonas Niklas指出这个问题,这是一个名称空间问题。我间接地将ActionView::Helpers::FormOptionsHelper包含在测试用例中,以便ActionView select与Capybara进行冲突。

答案 1 :(得分:0)

我的select也有一个名称空间问题(它使用内核而不是page.select)。我最终不得不改变这个:

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

对此:

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

只是包含的顺序修复了它。