Yanonoblog!

こつこつと

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です♪

https://runteq.jp/r/ohtFwbjW

こちらのリンクを経由すると1万円引きになります。

RUNTEQを通じて開発学習の末、受託開発企業をご紹介いただき、現在も双方とご縁があります。

もし、興味がありましたらお気軽にコメントか、TwitterのDMでお声掛けください。

https://twitter.com/outputky