Ruby on rails RSpec:使用FactoryGirl测试ActiveRecord钩子的最佳实践

Ruby on rails RSpec:使用FactoryGirl测试ActiveRecord钩子的最佳实践,ruby-on-rails,rspec,hook,factory-bot,rails-activerecord,Ruby On Rails,Rspec,Hook,Factory Bot,Rails Activerecord,我有一个模型,当触发*after_create*钩子时,它应该将自己设置为uuid。 由于我还使用FactoryGirl在规格内创建模型,所以我正在努力解决如何测试挂钩的问题 class User < ActiveRecord::Base after_create: attach_uuid def attach_uuid self.uuid = SecureRandom.uuid end end 但显然在save调用之后,钩子和方法*attach_uuid*没有被触

我有一个模型,当触发*after_create*钩子时,它应该将自己设置为uuid。 由于我还使用FactoryGirl在规格内创建模型,所以我正在努力解决如何测试挂钩的问题

class User < ActiveRecord::Base
  after_create: attach_uuid

  def attach_uuid
    self.uuid = SecureRandom.uuid
  end
end

但显然在save调用之后,钩子和方法*attach_uuid*没有被触发。有什么想法吗?创建后如何测试这种行为?

您应该在rspec中重新加载对象

user = FactoryGirl.build(:user, guid: nil)
user.save!
user.reload.uuid.should_not be_nil
user = FactoryGirl.build(:user, guid: nil)
user.save!
user.reload.uuid.should_not be_nil