Rails 5.1 Настройка встроенных системных тестов с помощью RSpec
После просмотра RailsConf видео в ActionDispatch:: systemTestCase, я был рад включить его в свое текущее приложение. В настоящее время наша установка тестового набора использует следующее:
Трудно было настроить конфигурацию для нашей текущей настройки, но в итоге мы ее работали, во многом благодаря статье Авди Гримма под названием: Настройка database_cleaner с Rails, RSpec, Capybara и Selenium.
Моя надежда состояла в том, чтобы использовать встроенные системные тесты рельсов, выпущенных в рельсах 5.1
. Поскольку в rails теперь встроено системное тестирование: все, что мне нужно будет беспокоиться о настройке, следующее:
И это потому, что ActionDispatch::systemTestCase
заботится о capybara
, database_cleaner
, и он уже настроен для драйвера selenium
.
Например: в настоящее время мой feature specs
написан так (Capybara в контексте RSpec):
#spec/features/blogs/creating_blogs_spec.rb
require "rails_helper"
RSpec.feature "Logged in User can create a blog" do
before do
create(:logged_in_user)
end
scenario "successfully", js: true do
...
end
end
Таким образом, типичная спецификация интеграции/функции/системы может выглядеть как для набора тестов, настроенного с параметрами rspec
, database_cleaner
, factory_girl
и capybara
. Я хотел бы преобразовать его в использование ActionDispatch::systemTestCase
.
Однако: я хотел бы использовать ActionDispatch::systemTestCase
в контексте rspec
.
Видео RailsConf, приведенное выше, показывает, как ActionDispatch:: systemTestCase работает в контексте шаблона набора тестов по умолчанию rails (например: minitest с тесты, расположенные в каталоге test
), но в нем не обсуждалось, как использовать ActionDispatch:: systemTestCase в контексте RSpec.
Я не мог найти никаких ресурсов для создания встроенных системных тестов rails, настраиваемых с помощью RSpec, в том числе в разделе системного тестирования направляющих рельсов. Возможно ли это?
Ответы
Ответ 1
Обновление октября 2017 года:
Rspec-rails 3.7 теперь полностью совместим с системными тестами.
В принципе, это все, что вам нужно добавить в свой spec_helper.rb
:
RSpec.configure do |config|
config.before(:each, type: :system) do
driven_by :rack_test
end
config.before(:each, type: :system, js: true) do
driven_by :selenium_chrome_headless
end
end
https://medium.com/table-xi/a-quick-guide-to-rails-system-tests-in-rspec-b6e9e8a8b5f6
Ответ 2
В соответствии с RailsConf Talk: Обучение RSpec для игры с рельсами, с rspec-rails 3.6.0
он несовместим с системой rails интеграция тестов.
Кажется, что совместимость выполняется с помощью этого запроса на перенос.