Shoulda Matchersとは?
Shoulda MatchersはActiveModelやActiveRecord等で使える豊富なマッチャのコレクションになります。(すでに開発は停止されております。)
複雑になりやすいRaisのテストを1行(ワンライナー)で記述することを目的として開発されています。
また、モデルだけでなくコントローラーのテストを支援する機能も含まれています。
インストール
Gemfileに下記を追加します。
1 2 3 4 5 |
group :development, :test do gem 'shoulda-matchers', git: 'https://github.com/thoughtbot/shoulda-matchers.git', branch: 'rails-5' end |
spec/rails_helper.rbの末尾に下記の記述を追加します。
1 2 3 4 5 6 |
Shoulda::Matchers.configure do |config| config.integrate do |with| with.test_framework :rspec with.library :rails end end |
構文
コントローラーのテスト
ステータスのテスト
1 |
is_expected.to respond_with(:success) |
レンダーするテスト
下記の場合はコントローラのアクションがちゃんとnewでレンダーされているかチェックできます。
1 |
is_expected.to render_template(:new) |
モデルのテスト
通常は複数行かかってしまいがちになるバリデーションやアソシエーションのテストを1行で書けるので非常に便利です。
validate_presence_of :フィールド名
対象のモデルの中に指定したフィールド名が存在しているかチェックします。
1 |
it { is_expected.to validate_presence_of :name } |
validate_uniqueness_of(:フィールド名)
対象のモデルの中に指定したフィールドが一意で存在しているかチェックします。
1 |
it { is_expected.to validate_uniqueness_of(:name) } |
have_many(:関連モデル)
1:多のアソシエーションのテストを行うことができます。
1 |
it { is_expected.to have_many(:users) } |
この記事へのコメントはありません。