#はじめに
皆さん始めまして!
駆け出しエンジニアのプージニアことpoo3です!
今回初投稿となるので多めに見ていただけると幸いです。
###対象となる読者様
・Rspecのシステムテストでクッキーに関してテストを行いたい方
###参考記事
@rokさんの記事
https://qiita.com/rok/items/09f5cab47338d0fa9188
##結論:gem 'show_me_the_cookies'を導入しよう
まずはGemfileに 'show_me_the_cookies'を追加
gem 'show_me_the_cookies'
次にみんな大好き 'bundle install' 💩💩
bundle install
rails_helperの中でインストールした'show_me_the_cookies'を使えるようにincludeする
(システムテストの中で使う事を想定しております)
config.include ShowMeTheCookies, :type => :system
上記完了したらシステムテストの中でクッキー弄り放題です👍
メソッドなどは下記ご参考ください
##実際に書いてみたテストコード
Rspec初心者なのでツッコミどころ満載かもしれませんが笑
今回は分かりやすいようにあえてリファクタリングはしてない状態で載せます!
feature "remember_me機能" do
before do
#ユーザを作成する
@test_user = FactoryBot.create(:user)
end
scenario "チェクボックスON" do
#ログインする
visit login_path
expect(page).to have_content 'Log in'
fill_in 'session_email', with: @test_user.email
fill_in 'session_password', with: @test_user.password
check 'session_remember_me'
expect(page).to have_checked_field('session_remember_me')
click_button 'ログイン'
#永続クッキー作成されているか確認
show_me_the_cookies
expect(get_me_the_cookie('remember_token')).to_not eq nil
#クッキーがきちんと仕事をするか確認
expire_cookies
visit root_path
expect(page).to have_content 'ログアウト'
end
scenario "チェックボックスOFF" do
#ログインする
visit login_path
expect(page).to have_content 'Log in'
fill_in 'session_email', with: @test_user.email
fill_in 'session_password', with: @test_user.password
expect(page).to have_unchecked_field('session_remember_me')
click_button 'ログイン'
#永続クッキー作成されていない事を確認
show_me_the_cookies
expect(get_me_the_cookie('remember_token')).to eq nil
end
end
###上記コードで使用している'show_me_the_cookies'のメソッド紹介
- show_me_the_cookies
- 現在のクッキー情報を出力する
クッキーの中身の情報を確認したい時に便利! - expire_cookies
- 期限切れのクッキーとセッションを全て破棄する!!
実質一度ブラウザを閉じた状態にすることができる✌️ - get_me_the_cookie(cookie_name)
- 特定のクッキー情報をハッシュで取得
#終わりに
少し短いですが以上になります!
これからも週1回程度何かしらの記事を書けたらと思います😁
ここまで読んでくれた方ありがとうございました!