質問編集履歴

1

内容がわかるタイトルに変更したこと及び回答のあった件について対応してみた結果の追記

2020/12/27 09:38

投稿

Harluz
Harluz

score19

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
+ 詳しい挙動等についてはこれから調べるため説明することはできませんが、とりあえず動作することができましたので、同じようにつまづいている方の参考になればと思います。