我有一个模型,当* 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 *。任何想法,如何在创建后测试这种行为?
答案 0 :(得分:1)
您应该在rspec中重新加载对象
user = FactoryGirl.build(:user, guid: nil)
user.save!
user.reload.uuid.should_not be_nil