在rails中,当为模型创建factorygirl时,不应该调用模型的before_create吗?

时间:2012-09-29 18:17:46

标签: ruby-on-rails factory-bot

我的应用程序有一个Phone模型,其中一个字段是.guid,它设置为before_create :set_guid(生成随机字符串并在创建模型时将其放入guid字段中)。

我的手机工厂看起来像:

require 'faker'

FactoryGirl.define do
  factory :phone do |f|
    f.phone { Faker::PhoneNumber.phone_number }
  end
end

这个创建手机的简单测试无法通过我的模型验证,因为guid是空白的:

describe Phone do
  it "has a valid factory"  do
    FactoryGirl.create(:phone).should be_valid
  end

我当然可以在工厂定义中手动填充guid字段,但是工厂不能运行模型的正常验证和回调以确保它们正常工作?

显然,我错过了一些东西 - 使用FactoryGirl创建模型实例的正确方法是什么才能正确运用before_create使guid等生成回调?

1 个答案:

答案 0 :(得分:2)

你有一部带有属性电话的手机型号?

除此之外,还有工厂女孩callbacks in their Getting Started


factory :user do
  callback(:after_stub, :before_create) { do_something }
  after(:stub, :create) { do_something_else }
  before(:create, :custom) { do_a_third_thing }
end

像before(:create)这样的东西可能适合你。

难道你不能在默认工厂中硬编码guid吗?我的意思是你只想测试它一次,看它是否有效,然后剩下的只是压载,因为你想要工作测试。