RSpec:使用FactoryGirl测试ActiveRecord挂钩的最佳实践

时间:2014-02-12 17:19:27

标签: 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

我的规格如下:

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

但显然在 save 之后调用了钩子并且没有触发方法* attach_uuid *。任何想法,如何在创建后测试这种行为?

1 个答案:

答案 0 :(得分:1)

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

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