mirror of
https://github.com/thoughtbot/factory_bot.git
synced 2022-11-09 11:43:51 -05:00
parent
c52c3d06fc
commit
351b04de02
3 changed files with 45 additions and 0 deletions
|
@ -788,6 +788,28 @@ FactoryGirl.json(:user)
|
||||||
Finally, you can override factory\_girl's own strategies if you'd like by
|
Finally, you can override factory\_girl's own strategies if you'd like by
|
||||||
registering a new object in place of the strategies.
|
registering a new object in place of the strategies.
|
||||||
|
|
||||||
|
Custom Methods to Persist Objects
|
||||||
|
------------------------------
|
||||||
|
|
||||||
|
By default, creating a record will call `save!` on the instance; since this
|
||||||
|
may not always be ideal, you can override that behavior by defining
|
||||||
|
`to_create` on the factory:
|
||||||
|
|
||||||
|
```ruby
|
||||||
|
factory :different_orm_model do
|
||||||
|
to_create {|instance| instance.persist! }
|
||||||
|
end
|
||||||
|
```
|
||||||
|
|
||||||
|
To disable the persistence method altogether on create, you can `skip_create`
|
||||||
|
for that factory:
|
||||||
|
|
||||||
|
```ruby
|
||||||
|
factory :user_without_database do
|
||||||
|
skip_create
|
||||||
|
end
|
||||||
|
```
|
||||||
|
|
||||||
Cucumber Integration
|
Cucumber Integration
|
||||||
--------------------
|
--------------------
|
||||||
|
|
||||||
|
|
|
@ -144,6 +144,10 @@ module FactoryGirl
|
||||||
@definition.to_create(&block)
|
@definition.to_create(&block)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def skip_create
|
||||||
|
@definition.to_create {|instance| }
|
||||||
|
end
|
||||||
|
|
||||||
def factory(name, options = {}, &block)
|
def factory(name, options = {}, &block)
|
||||||
@child_factories << [name, options, block]
|
@child_factories << [name, options, block]
|
||||||
end
|
end
|
||||||
|
|
19
spec/acceptance/skip_create_spec.rb
Normal file
19
spec/acceptance/skip_create_spec.rb
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
require "spec_helper"
|
||||||
|
|
||||||
|
describe "skipping the default create" do
|
||||||
|
before do
|
||||||
|
define_model("User", email: :string)
|
||||||
|
|
||||||
|
FactoryGirl.define do
|
||||||
|
factory :user do
|
||||||
|
skip_create
|
||||||
|
|
||||||
|
email "john@example.com"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
it "doesn't execute anything when creating the instance" do
|
||||||
|
FactoryGirl.create(:user).should_not be_persisted
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in a new issue