📜  未定义的方法 `click_on' capybara rspec (1)

📅  最后修改于: 2023-12-03 14:55:25.129000             🧑  作者: Mango

未定义的方法 `click_on' capybara rspec

如果您正在使用 Capybara 和 RSpec 进行测试,有时您可能会遇到 “未定义的方法 `click_on'” 错误。这可能是由于您忘记了在测试中引入 Capybara 的 DSL(领域特定语言) 。Capybara DSL 提供了一些方便的方法,使您能够以更简洁的方式编写测试。

解决方法

您需要确保在测试文件顶部引入 Capybara 的 DSL,如下所示:

require 'capybara/rspec'

RSpec.configure do |config|
  config.include Capybara::DSL
end

请注意,上面的代码应该放在 rails_helper.rbspec_helper.rb 文件中,而不是测试文件中。

还有一种可能是您正在使用 click_on 方法之前未定义 Capybara.current_session 。您需要确保先定义 Capybara.current_session,如下所示:

let(:session) { Capybara.current_session }

scenario 'Clicking the button', js: true do
  visit '/example_page'
  session.click_on 'Example Button'
  expect(page).to have_content 'Button clicked'
end

请确保将 js: true 添加到您的场景中,因为 click_on 方法需要 JavaScript 支持。

总结

当您遇到 未定义的方法 click_on'错误时,请先检查是否已引入 Capybara DSL,并确保已先定义Capybara.current_session`。同时,着重理解 DSL 的优点,以便编写更优雅和简洁的测试。