check

【Rails】 RSpecの基本的な書き方

おつかれさまです

今日はRSpecの基本的な書き方をまとめておきます

RSpecとは

Railsで作成したモデルやコントローラーをrspecを書くことで自動テストしてくれます。このおかげで画面ぽちぽちしなくていいですね

https://github.com/rspec/rspec-rails

RSpecの実行

# RSpecの実行
# 全ファイル実行
bundle exec rspec .

# ファイルを指定して実行
bundle exec rspec spec/models/***_spec.rb

modelでテスト

RSpec.describe User, type: :model do
  describe 'テストの対象 メソッドとか' do
    context '~~の場合 activateメソッドとか' do
      let(:user) { create(:user) }
    
      # 事前処理したいことあればbefore
      before do
        #
      end

      it '~~になること 有効になる事とか' do
        user.activate
        expect(user.status).to eq 'active'
      end
    end
  end
end

describe : テストの対象を書く
context : 特定の条件の内容
let : 変数的に使える。例だとspec/factoriesフォルダから作成されるuserが入る
it : 期待すること
eq : 期待値と実際値が等しいかどうか検証する

Controllerでテスト

RSpec.describe UsersController, type: :controller do
  describe 'GET show' do
    context 'プロフィールが無効の場合' do
      let(:user) { create(:user, profile: 'inactive') }
      before { get :show, params: { id: user.id } }
      it 'プロフィールが表示されないこと' do
        expect(response).to have_http_status 200
        expect(response).to render_template :show
        expect(response.body.exclude?("#{user.name}のプロフィール")).to eq true
      end
    end
  end
end


# elasticsearchのテスト
describe 'GET search', elasticsearch: true do

ps: 共通処理で使えるinclude_contextらへんもまとめたいところ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です