0
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】Shoulda-Matchers で独自に設定したエラーメッセージをテストする方法

Posted at

shoulda-matchersを使ってカスタムメッセージのバリデーションテストをするとき、書き方がわからなくて少し詰まったのでここに共有させて頂きます。

shoulda-matchersとは何ぞや?

shoulda-matchersというのは、通常のRSpecで書くと長くなるテストが簡潔にかけるようになるgemです。

例えば以下のようなバリデーションを持ったモデルがあったとします。

user.rb
class User < ApplicationRecord
  validates :nickname, presence: true, length: { maximum: 30 }
end

このテストが以下のように一行でかけます。

spec/models/user_spec.rb
it { is_expected.to validate_length_of(:nickname).is_at_most(30) }

なかなかに便利ですね。

独自に設定したエラーメッセージをテストしたい場合

例えば以下のような、独自のエラーメッセージを持ったバリデーションを設定したとします。

user.rb
validates :email, presence: { message: 'が入っていません' }

バリデーションと同時に、独自のエラーメッセージが表示されているかということもチェックしたい場合

spec/models/user_spec.rb
it { should validate_presence_of(:email). with_message('が入っていません') }

このように書くことで独自のエラーメッセージとバリデーションを同時にチェックすることができます。

他にも使い方が色々あるので、気になる方はこちらを一読してみてください。
導入方法も書いてあります。
Shoulda-Matchers READ ME

最後まで読んでいただきありがとうございます!

日々学んだことをアプトプットしてます!なにかご指摘などあればコメントいただけますと嬉しいです!

0
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
0
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?