RSpec、とりわけリクエストスペックでの質問です。
リクエストスペックで!session[:user_id].nil?がなぜ使えるのかが疑問です。
session[:user_id] = user.idを行った際はsessionメソッドは使えません。とエラーが出ました。
# spec/support/login_support.rb module LoginUser # このメソッドがなぜリクエストスペックで使えるのかが疑問 def is_logged_in? !session[:user_id].nil? end # これは使えない def test_log_in(user) session[:user_id] = user.id end RSpec.configure do |config| config.include LoginUser end end
# spec/request/sessions_request_spec.rb require 'rails_helper' RSpec.describe "Sessions", type: :request do let(:user) { FactoryBot.attributes_for(:user) } describe "destroy" do before do post users_path, params: { user: user } end # このitは通る it "ログイン状態じゃなくなる" do delete logout_path(user) expect(is_logged_in?).to_not be_truthy # このexpectで使用 end end describe "create" do # このitはエラー it "sessionメソッドを使いログイン", focus: true do test_log_in( FactoryBot.create(:user) ) # test_log_inはここで使用 expect(is_logged_in?).to be_truthy end end end
# エラー文 Failure/Error: session[:user_id] = user.id NoMethodError: undefined method `session' for nil:NilClass
system specでsessionメソッドが使えないのは知っていましたが、リクエストスペックでも使えないのでしょうか?
繰り返しになりますが、その場合なぜis_logged_inメソッドは使えたのでしょうか?
よろしくお願い致します。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/08 08:08
2020/05/09 01:35