配置RSpec以将Capybara.javascript_driver用于所有请求规范

rub*_*iii 8 ruby rspec acceptance-testing capybara

全局配置RSpec是否可以为所有请求规范使用Capybara(默认或自定义)JavaScript驱动程序?我们有时会忘记手动添加js: true到每个请求规范,这有点烦人.

pru*_*wan 10

在spec_helper.rb中,设置以下内容:

  config.before(:each) do
    if example.metadata[:type] == :request
      Capybara.current_driver = :selenium # or equivalent javascript driver you are using
    else
      Capybara.use_default_driver # presumed to be :rack_test
    end
  end
Run Code Online (Sandbox Code Playgroud)


jus*_*don 8

对于capybara和rspec的更高版本,检查类型是"功能"是很重要的

config.before(:each) do
  if [:request, :feature].include? example.metadata[:type]
    Capybara.current_driver = :poltergeist # or equivalent javascript driver you are using
  else
    Capybara.use_default_driver # presumed to be :rack_test
  end
end
Run Code Online (Sandbox Code Playgroud)

或者对于RSpec 3(example进入区块)

config.before(:each) do |example|
  if [:request, :feature].include? example.metadata[:type]
    Capybara.current_driver = :poltergeist # or equivalent javascript driver you are using
  else
    Capybara.use_default_driver # presumed to be :rack_test
  end
end
Run Code Online (Sandbox Code Playgroud)