Build strategies
factory_bot supports several different build strategies: build, create,
attributes_for and build_stubbed:
# Returns a User instance that's not saved
user = build(:user)
# Returns a saved User instance
user = create(:user)
# Returns a hash of attributes, which can be used to build a User instance for example
attrs = attributes_for(:user)
# Integrates with Ruby 3.0's support for pattern matching assignment
attributes_for(:user) => {email:, name:, **attrs}
# Returns an object with all defined attributes stubbed out
stub = build_stubbed(:user)
# Passing a block to any of the methods above will yield the return object
create(:user) do |user|
user.posts.create(attributes_for(:post))
end
build_stubbed and Marshal.dump
Note that objects created with build_stubbed cannot be serialized with
Marshal.dump, since factory_bot defines singleton methods on these objects.