本厚木のエンジニアブログではある

日々の開発で出たエラーや日常などいろいろ書いていくブログです。

Rails FactoryGirlでcallbackをskipする

Rspecでよくお世話になるFactoryGirlのお話しです。
before_createのせいでうまいことテストデータを作成できなく
callbackをスキップしたいことが起きたのでそのメモ

FactoryGirlとは

Rspecで使うためのテストデータを作成するためのGemです。  

FactoryGirlでcallback

skip_callbackで特定の処理だけ飛ばすことができます。
reset_callbacksですべての処理を飛ばすことができます。
3つskipしたいものがあったので下記の様にパーセント記法を用いて記述しました。
%iで要素がシンボルの配列を作ることができます。

FactoryGirl.define do
  factory :image do
    url 'https://localhost/image.png'

    after(:build) do
      Image._save_callbacks.select { |cb| %i[hoge_tmp moge_tmp huga_tmp].include?(cb.filter) }.each do |cd|
        Image.skip_callback hoge.name, hoge.kind
      end
    end
  end
end

こんな感じに書けばいけるはずです。
うろおぼえウロボロス