ざきの学習帳(旧 zackey推し )

日々の学びを書きます

RSpecが特定のファイルしか実行されない(または中断されてしまう)場合は focus: true がないかチェックする

最近、仕事でSSO周りをRuby on Railsで実装しているのですが、
連携先によってロジックが変わります。

そのロジックを誰か(自分)が引き継ぐとなった場合、
何が正と判断するのに、テストコードが非常に参考になるという経験をしました。

テストコードはRSpecで記述しているのですが、
bundle exec rspecを実行しても特定のファイルしかテストされない
という事象に行き当たりました。

今後も同じことに躓く可能性があると感じ、メモとして記事にしておこうと思います。

filter_run_when_matchingfocus: true

RSpecを導入した後、
spec/spec_helper.rbに以下のような設定があります。

# spec/spec_helper.rb
RSpec.configure do |config|
  # 〜省略〜
  config.filter_run_when_matching :focus
  # 〜省略〜
end

この設定により、
RSpec.describe SampleController, type: :request, focus: true do
のように設定したspecファイルに対してのみ、テストを実行するようになります。

focus: trueをmaster / developブランチへ誤ってコミットしてしまうと、
RSpecが特定のファイルしか実行されない...」
というようなことが起きるので、コミット前に focus: true の消し忘れがないか、
確認するようにしましょう。

※rubocopとかで設定できるといいけど、できるのかな... 🤔

参考記事