質問編集履歴
1
内容がわかるタイトルに変更したこと及び回答のあった件について対応してみた結果の追記
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
rspecでログイン状態を再現する方法について
|
1
|
+
rspecでログイン状態(session値の設定)を再現する方法について
|
body
CHANGED
@@ -99,4 +99,39 @@
|
|
99
99
|
ちなみに、ブラウザ情では期待している動作になっておりますので、問題はないかと思います。
|
100
100
|
|
101
101
|
どんな些細なことでも構いませんので、どなたか教えていただければとても助かります。
|
102
|
-
よろしくお願いします。
|
102
|
+
よろしくお願いします。
|
103
|
+
|
104
|
+
neko_daisukiさんの回答より
|
105
|
+
test_helperを下記のメソッドを追記
|
106
|
+
```testhelper
|
107
|
+
def sign_in(user)
|
108
|
+
allow_any_instance_of(ActionDispatch::Request).to receive(:session).and_return(user_id: user.id)
|
109
|
+
end
|
110
|
+
```
|
111
|
+
|
112
|
+
```usersrequestspec
|
113
|
+
subject { response }
|
114
|
+
let(:user) { FactoryBot.create(:user) }
|
115
|
+
# ユーザーがログインしている場合
|
116
|
+
context 'The user is logged in' do
|
117
|
+
before do
|
118
|
+
sign_in(user) ← 修正
|
119
|
+
get edit_user_path(user)
|
120
|
+
end
|
121
|
+
it 'responds successfully' do
|
122
|
+
is_expected.to be_successful
|
123
|
+
end
|
124
|
+
|
125
|
+
it 'returns a 200 response' do
|
126
|
+
is_expected.to have_http_status(200)
|
127
|
+
end
|
128
|
+
end
|
129
|
+
```
|
130
|
+
rspecを実行した結果
|
131
|
+

|
132
|
+
しっかりsessionの値を取得しrenderしていることが確認できます。
|
133
|
+
|
134
|
+
neko_daisukiさんの記述していただいたコードでは以前と同じログになったため、下記qiitaの記事を参考にしたところ、成功いたしました。
|
135
|
+
[request spec で session 値を設定する](https://qiita.com/blueberrystream/items/884d0d23caf50b6553a0)
|
136
|
+
|
137
|
+
詳しい挙動等についてはこれから調べるため説明することはできませんが、とりあえず動作することができましたので、同じようにつまづいている方の参考になればと思います。
|