RSpec で特定の spec type の時だけ before フックを動かしたい

おはようございます!

最近は隙間時間にインゲージのテスト環境を整備をしている @shutooike です!

今回は整備中に見つけた RSpec 小ネタを共有します。

前提条件

rspec-rails: 3.9.0

やりたいこと

RSpec で特定の spec type の時だけ before フックを動かしたい

解決策

# spec/rails_helper.rb

RSpec.configure do |config|
  # type が :model の時
  config.before(:each, type: :model) do
    # do something
  end
  
  # type が :model, :request ではない時
  config.before(:each, type: -> (t) { %i(model request).exclude?(t) }) do
    # do something
  end
end 

もちろん before:each 以外でも動きます。

おわりに

lambda も渡せるの便利ですねー!

弊社ではテスト環境に一家言お持ちの方もお持ちでない方も募集しております!!

ご興味あればぜひ下記リンクを覗いてみてください 👀

ingage.co.jp

ではまた!