我正在测试一个带有创建后回调的模型,我只想在测试时在某些情况下运行该回调。如何跳过/运行工厂的回调?
class User < ActiveRecord::Base
after_create :run_something
...
end
工厂:
FactoryGirl.define do
factory :user do
first_name "Luiz"
last_name "Branco"
...
# skip callback
factory :with_run_something do
# run callback
end
end
最佳答案
我不确定这是否是最好的解决方案,但我已经成功地实现了这一点:
FactoryGirl.define do
factory :user do
first_name "Luiz"
last_name "Branco"
#...
after(:build) { |user| user.class.skip_callback(:create, :after, :run_something) }
factory :user_with_run_something do
after(:create) { |user| user.send(:run_something) }
end
end
end
无回调运行:
FactoryGirl.create(:user)
运行回调:
FactoryGirl.create(:user_with_run_something)
关于ruby-on-rails - 跳过 Factory Girl 和 Rspec 的回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8751175/