8

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

4

3 回答 3

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
于 2012-10-31T20:37:07.153 回答
8

对于更高版本的 capybara 和 rspec,检查 type 是否为“feature”很重要

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

或对于 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
于 2013-03-10T21:49:03.477 回答
0

如果您想一次运行所有测试用例,请参阅此解决方案。

Rspec+Capybara 可选更改 JS 驱动

于 2015-11-12T19:42:30.673 回答