フック
factory
定義ブロックやFactoryBot.define
ブロック内部では、after
メソッドやbefore
メソッドやcallback
メソッドが使えます。
これにより構築戦略の一部にフックを掛けられます。
factory
定義ブロック内では、これらのコールバックはそのファクトリのみのスコープとなります。
FactoryBot.define
ブロック内では、全てのファクトリに対して大域的になります。
callback
callback
メソッドでは、任意のfactory_botのコールバックに名前でフックを掛けられます。
構築戦略の便覧に見られる通り、予め定義された名前はbefore_all
とafter_build
とbefore_create
とafter_create
とafter_stub
とafter_all
です。
このメソッドはスプラットされる名前とブロックを取ります。
名前のどれかが活性になる度にブロックが呼ばれます。
ブロックは#to_proc
に応答する任意のものにできます。
このブロックは2つの実引数を取ります。 1つはファクトリのインスタンスで、もう1つはfactory_botの文脈です。 文脈はtransient属性を持ちます。
同じコールバック名を複数回フックに掛けられます。 ブロックは全て、定義された順に実行されます。 コールバックは親から継承します。 親のコールバックがまず実行されます。
after
メソッドとbefore
メソッド
after
メソッドとbefore
メソッドはcallback
にいい感じの構文を加えています。
after(:create) do |user, context|
user.post_first_article(context.article)
end
callback(:after_create) do |user, context|
user.post_first_article(context.article)
end