Nei*_*eil 10 ruby rspec ruby-on-rails
在ActionDispatch :: systemTestCase上观看RailsConf视频后,我很高兴将它整合到我当前的应用程序中.目前我们的测试套件设置使用以下内容:
# for feature specs# for feature specs, mostly for testing js# for feature specs# for feature specs很难让配置适用于我们当前的设置,但我们最终得到了它的工作,主要归功于Avdi Grimm的一篇题为" 使用Rails,RSpec,Capybara和Selenium配置database_cleaner "的文章.
我希望使用轨道中释放的轨道的内置系统测试5.1.由于rails现在内置了系统测试:我需要担心的是配置如下:
rspecfactory_girl这是因为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
Run Code Online (Sandbox Code Playgroud)
因此,这是一个典型的集成/功能/系统规范可能是什么样子用于配置有一个测试套件rspec,database_cleaner,factory_girl,和capybara.我想将它转换为使用ActionDispatch::systemTestCase.
但是:我想ActionDispatch::systemTestCase在上下文中使用RSpec.
上面的RailsConf视频显示了ActionDispatch :: systemTestCase如何在rails的默认测试套件布局的上下文中工作(例如:minitest,测试位于test目录中),但它没有讨论如何在RSpec的上下文中使用ActionDispatch :: systemTestCase .
Dan*_*iel 12
2017年10月更新:
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
Run Code Online (Sandbox Code Playgroud)
https://medium.com/table-xi/a-quick-guide-to-rails-system-tests-in-rspec-b6e9e8a8b5f6