我的应用程序有一个电话模型,其中一个字段是 .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 创建模型实例的正确方法是什么,该模型可以正确执行生成 guid 等的 before_create 回调?
最佳答案
您有带有属性电话的型号电话吗?
除此之外,还有工厂女孩 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吗?我的意思是你只想测试一次看看它是否有效,然后剩下的只是镇流器,因为你想要有效的测试。
关于ruby-on-rails - 在rails中,为模型创建factorygirl时,不应该调用模型的before_create吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12655241/