Настройте RSpec для использования Capybara.javascript_driver для всех спецификаций запросов.

Можно ли глобально настроить RSpec для использования драйвера JavaScript Capybara (по умолчанию или пользовательского) для всех спецификаций запросов? Иногда мы забываем вручную добавлять js: true к каждой спецификации запроса, и это немного раздражает.


person rubiii    schedule 31.10.2012    source источник


Ответы (3)


В 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
person prusswan    schedule 31.10.2012
comment
Это работает, но я хотел бы ограничить это запросом спецификаций. Конечно, я мог бы поместить эту строку в каждый файл спецификации запроса, но я хотел бы настроить ее глобально. Вроде как вы можете включать определенные модули для определенных типов спецификаций. - person rubiii; 01.11.2012
comment
есть ли аналогичный обходной путь для rspec 3? пример сейчас не определен - person noli; 12.02.2014

Для более поздних версий 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

или для 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
person justingordon    schedule 10.03.2013
comment
Если вы используете RSpec ›= 3, вам нужно будет написать первую строку, например config.before(:each) do |example|, чтобы получить такое же поведение. Подробнее через @joshua-muheim здесь: stackoverflow.com/a/24571607/2948832 - person styger; 16.12.2014

Обратитесь к этому решению, если вы хотите запустить все тестовые случаи одновременно.

Rspec+Capybara при необходимости может изменить драйвер JS

person hacker_1989    schedule 12.11.2015
comment
Поместите соответствующую информацию в сообщение. - person gre_gor; 12.11.2015