🖥

Rails | rspec の change + have_attributes でレコードが作成されたことを検証する

2023/08/26に公開

「レコード数だけ」を検証するより厳密なやり方。

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オープンチャットもご利用ください。

https://line.me/ti/g2/eEPltQ6Tzh3pYAZV8JXKZqc7PJ6L0rpm573dcQ

Twitter

https://twitter.com/YumaInaura

公開日時

2017-03-15

Discussion