ruby 2.6.3
Rails 5.1.6
Cloud9
feature specの中からはHTTPリクエストを扱えますが、
system specから扱うことは出来ないのでしょうか?
【背景】
RoRチュートリアルの別タブによるログアウトのテストをsystem specで行いたい
以下のfeature specで書いた方はパスします
ruby
1require 'rails_helper' 2 3RSpec.feature "UsersLogin", type: :feature do 4 5 before do 6 @user = FactoryBot.create(:user) 7 end 8 9 describe ' 同じサイトを 複数tab/window で開いている状態をシュミレート' do 10 11 context "when open in some browser-tab(or window)" do 12 13 scenario "1st time log out" do 14 sign_in_as(@user) 15 16 click_link "ログアウト" 17 end 18 19 scenario "2nd time log out", type: :request do 20 delete logout_path(@user) 21 expect(page).to have_current_path(root_path) 22 end 23 24 end 25 26 end 27 28end
この1行目をsystemに置き換えると
ruby
1RSpec.feature "UsersLogin", type: :system do
ルーティングエラーになります。
ruby
11.1) Failure/Error: delete logout_path(@user) 2 3 ActionController::RoutingError: 4 No route matches [DELETE] "/127.0.0.1/logout.1"
【質問1】
ほとんどのサイトでfeature と systemは同義。今後はsystemを使うよう推奨とあります。
ですが、上記のように動きが異なっています。
この理由としては、featureは古いぶんrequest specとしての互換性があり、
新しい方のsystem specは、より切り分けが進んだためでしょうか?
【質問2】
system specでリクエストを絡めた実装をする方法はないでしょうか?
この場合は、どうしてもfeature specになるでしょうか?
あなたの回答
tips
プレビュー