🖥
Rails | rspec の change + have_attributes でレコードが作成されたことを検証する
「レコード数だけ」を検証するより厳密なやり方。
require 'rails_helper'
RSpec.describe User, type: :model do
# レコードを作成する(もしくは状態を変更する)何らかの処理
subject{ -> { User.create(first_name: 'Alice', last_name: 'Lidell') } }
# レコードが0件から1件に増えたことのテスト
it { is_expected.to change { User.all.size }.from(0).to(1) }
# 特定の値でレコードが作成されたことのテスト
it 'creates record' do
is_expected
.to change { User.first }
.from(nil)
.to(
have_attributes(
first_name: 'Alice',
last_name: 'Lidell'
)
)
end
end
User.first
を取っているところがイケてないので、もっと良い書き方が出来るかも。
結果
bundle exec rspec -fd spec/models/user_spec.rb
User
should change result from 0 to 1
creates record
Finished in 0.02523 seconds (files took 1.98 seconds to load)
2 examples, 0 failures
環境
- rspec-rails (3.5.2)
チャットメンバー募集
何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。
公開日時
2017-03-15
Discussion