matcherについて紹介したいと思います。マッチャ合成式で否定系(not_to)をテストしたい場合に重宝しそうです。Expressions)とは、RSpec3から導入された機能で、1つのitに複数の期待するテストを書くことができる手法です。複数の期待するテストはandやorを繋げて記述することができます。アルファベットがaから始まりzで終わるテストを書くとします。マッチャ合成式を使用しない場合は以下のように2つのexpectを記載しなければなりません。end_with("z")endしかしマッチャ合成式を使用することで以下のように記述することができます。end_with("z")endandは連結したテストの両方を満たす場合にパスします。どれかのテストがパスすることを期待するorもあります。以下は信号機の色が赤/緑/黄のどれかであることを期待するテストになります。Expressions)を使用することで連結してテストを書くことができ、冗長なコードを減らすことが可能になります。Expressions)は便利ですが、その一方で否定系のテスト(not_to)を書くことができません。matcherになります。matcherを使用することで、否定系のマッチャ合成式を書くことができるようになります。matcherを使用してテストしてみます。matcherを定義するためのファイルであるmatchers.rbをspec/support配下に作成しましょう。作成したmatcher.rbに否定系にしたいマッチャを記載します。引数に定義したいマッチャを、第二引数には既存のマッチャを指定します。今回はstart_withマッチャとend_withマッチャをnot_start_withとnot_end_withというマッチャ名に変更します。:end_withmatchers.rbの読み込み続いて、matchers.rbを読み込む記述をrails_helper.rbに追記します。最後にテストを以下のように変更します。'rails_helper'の記載を忘れないよう注意しましょう。not_end_with("z")endこれで「アルファベットがaから始まりzで終わらないこと」のテストがパスすることが確認できます。matcherについて紹介しました。マッチャ合成式で否定系(not_to)をテストする場合だけでなく、一連の流れをテストしたい場合にも使えそうですね。Envi...Railsエンジニアちばよしはる銀座にあるヘルステック企業のRailsエンジニア。初心者から中級者向けに記事を更新しています。お酒とカレーと競馬が好き。TechTechMedia。