おつかれさまです
今日は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らへんもまとめたいところ