RSpecで特定の場合だけ実行するテストを書く
はじめに
プロジェクトが大きくなってくるにつれてテストの実行時間を最適化することも開発において重要です。
とあるテストでは処理が重くなりがちなので毎回実行したくないなどそういったケースもあるかと思います。
今回はRSpecで特定のテストを実行したくないケースの書き方についてまとめます。
実行を制御したいSpecにタグをつける
RSpecではテストのブロックに対して任意の名前のタグをつけることができます。
これにより、テストケースをグループ化したり、特定のテストケースを簡単に指定したりすることができます。
基本構文
RSpecのタグ付けの基本的な構文は以下のようになります。
describe "テストA", :tag_name do # 任意のtag_nameというタグ名をつけている it "テストケースA" do # 略 end end
上記の例では、describe
ブロック全体に:tag_name
というタグをつけています。
これにより、このdescribe
ブロック内の全てのテストケースに:tag_name
というタグが適用されます。
また、個々のit
ブロックにもタグをつけることができます。下記の例では、it
ブロックに:another_tag_name
というタグをつけています。
describe "テストA", :tag_name do # 任意のtag_nameというタグ名をつけている it "テストケースA", :case_tag_name do # 任意のcase_tag_nameというタグ名をつけている # 略 end end
実行・制御方法
以下のようにRSpecの実行時に特定のタグがついたテストだけを実行したり、特定のタグがついたテストを除外したりすることができます。
# :tag_nameというタグがついたテストだけを実行 rspec --tag tag_name # :tag_nameというタグがついたテストを除外 rspec --tag ~tag_name
—tagオプションは省略記法もあります。
# :tag_nameというタグがついたテストだけを実行 rspec -t tag_name # :tag_nameというタグがついたテストを除外 rspec -t ~tag_name
RSpecのタグ機能を活用することで、テストの実行をより柔軟に制御することができます。
おしまい
コメント
本記事の内容は以上になります!
プログラミングスクールのご紹介 (卒業生より)
お世話になったプログラミングスクールであるRUNTEQです♪
こちらのリンクを経由すると1万円引きになります。
RUNTEQを通じて開発学習の末、受託開発企業をご紹介いただき、現在も双方とご縁があります。
もし、興味がありましたらお気軽にコメントか、TwitterのDMでお声掛けください。