1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Rspecのシステムテストでクッキーに関するテストしてみた

Last updated at Posted at 2020-11-29

#はじめに
皆さん始めまして!
駆け出しエンジニアのプージニアことpoo3です!
今回初投稿となるので多めに見ていただけると幸いです。

###対象となる読者様
・Rspecのシステムテストでクッキーに関してテストを行いたい方

###参考記事
@rokさんの記事
https://qiita.com/rok/items/09f5cab47338d0fa9188

##結論:gem 'show_me_the_cookies'を導入しよう
まずはGemfileに 'show_me_the_cookies'を追加

Gemfile.rb
gem 'show_me_the_cookies'

次にみんな大好き 'bundle install' 💩💩

bundle install

rails_helperの中でインストールした'show_me_the_cookies'を使えるようにincludeする
(システムテストの中で使う事を想定しております)

rails_helper.rb
config.include ShowMeTheCookies, :type => :system

上記完了したらシステムテストの中でクッキー弄り放題です👍

メソッドなどは下記ご参考ください

##実際に書いてみたテストコード
Rspec初心者なのでツッコミどころ満載かもしれませんが笑
今回は分かりやすいようにあえてリファクタリングはしてない状態で載せます!

user_login_spec.rb
  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回程度何かしらの記事を書けたらと思います😁
ここまで読んでくれた方ありがとうございました!

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?