Hooks
Within a factory
definition block and the FactoryBot.define
block, you have
access to the after
, before
, and callback
methods. This allow you to hook
into parts of the build strategies.
Within a factory
definition block, these callbacks are scoped to just that
factory. Within a FactoryBot.define
block, they are global to all factories.
callback
The callback
method allows you to hook into any factory_bot callback by
name. The pre-defined names, as seen in the build strategies reference, are
after_build
, before_create
, after_create
, and after_stub
.
This method takes a splat of names, and a block. It invokes the block any time
one of the names is activated. The block can be anything that responds to
#to_proc
.
This block takes two arguments: the instance of the factory, and the factory_bot context. The context holds transient attributes.
The same callback name can be hooked into multiple times. Every block is run, in the order it was defined. Callbacks are inherited from their parents; the parents' callbacks are run first.
after
and before
methods
The after
and before
methods add some nice syntax to 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