質問編集履歴
1
内容がわかるタイトルに変更したこと及び回答のあった件について対応してみた結果の追記
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
rspecでログイン状態を再現する方法について
|
1
|
+
rspecでログイン状態(session値の設定)を再現する方法について
|
test
CHANGED
@@ -201,3 +201,73 @@
|
|
201
201
|
どんな些細なことでも構いませんので、どなたか教えていただければとても助かります。
|
202
202
|
|
203
203
|
よろしくお願いします。
|
204
|
+
|
205
|
+
|
206
|
+
|
207
|
+
neko_daisukiさんの回答より
|
208
|
+
|
209
|
+
test_helperを下記のメソッドを追記
|
210
|
+
|
211
|
+
```testhelper
|
212
|
+
|
213
|
+
def sign_in(user)
|
214
|
+
|
215
|
+
allow_any_instance_of(ActionDispatch::Request).to receive(:session).and_return(user_id: user.id)
|
216
|
+
|
217
|
+
end
|
218
|
+
|
219
|
+
```
|
220
|
+
|
221
|
+
|
222
|
+
|
223
|
+
```usersrequestspec
|
224
|
+
|
225
|
+
subject { response }
|
226
|
+
|
227
|
+
let(:user) { FactoryBot.create(:user) }
|
228
|
+
|
229
|
+
# ユーザーがログインしている場合
|
230
|
+
|
231
|
+
context 'The user is logged in' do
|
232
|
+
|
233
|
+
before do
|
234
|
+
|
235
|
+
sign_in(user) ← 修正
|
236
|
+
|
237
|
+
get edit_user_path(user)
|
238
|
+
|
239
|
+
end
|
240
|
+
|
241
|
+
it 'responds successfully' do
|
242
|
+
|
243
|
+
is_expected.to be_successful
|
244
|
+
|
245
|
+
end
|
246
|
+
|
247
|
+
|
248
|
+
|
249
|
+
it 'returns a 200 response' do
|
250
|
+
|
251
|
+
is_expected.to have_http_status(200)
|
252
|
+
|
253
|
+
end
|
254
|
+
|
255
|
+
end
|
256
|
+
|
257
|
+
```
|
258
|
+
|
259
|
+
rspecを実行した結果
|
260
|
+
|
261
|
+
![テスト成功状況](74e158476e63874f5b67a62437a13858.png)
|
262
|
+
|
263
|
+
しっかりsessionの値を取得しrenderしていることが確認できます。
|
264
|
+
|
265
|
+
|
266
|
+
|
267
|
+
neko_daisukiさんの記述していただいたコードでは以前と同じログになったため、下記qiitaの記事を参考にしたところ、成功いたしました。
|
268
|
+
|
269
|
+
[request spec で session 値を設定する](https://qiita.com/blueberrystream/items/884d0d23caf50b6553a0)
|
270
|
+
|
271
|
+
|
272
|
+
|
273
|
+
詳しい挙動等についてはこれから調べるため説明することはできませんが、とりあえず動作することができましたので、同じようにつまづいている方の参考になればと思います。
|