ruby-on-rails - 跳过 Factory Girl 和 Rspec 的回调

标签 ruby-on-rails rspec factory-bot

我正在测试一个带有创建后回调的模型,我只想在测试时在某些情况下运行该回调。如何跳过/运行工厂的回调?

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/

相关文章:

ruby-on-rails - S3 跨域资源共享不起作用

sql - ruby 新手,很难理解码合的 ruby​​/sql 语法(这也很难用谷歌搜索)

ruby-on-rails - FactoryBotRails 工厂中的循环依赖

ruby-on-rails - 如何覆盖 factory_girl 中的委托(delegate)属性?

ruby-on-rails - 锁轨确认盒子 Action

ruby-on-rails - ActiveRecord has_and_belongs_to_many : find models with all given elements

mysql - 如何抑制DDL日志

testing - 具有设计身份验证的 rspec Controller 测试

ruby-on-rails - 正在运行的规范条目正在从模式迁移表中删除

ruby-on-rails - 如何使用不命中数据库的 Factory Girl 测试 Rails 中的关系?