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

标签 ruby-on-rails factory-bot

我的应用程序有一个电话模型,其中一个字段是 .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/

相关文章:

ruby-on-rails - 预加载(包括)多态关联

ruby-on-rails - 如何使用 Rspec 测试 Ruby on Rails 中的链式方法

ruby-on-rails - 如何更改 Rails 中的默认单词?

ruby-on-rails - Rails 系统堆栈错误 : stack level too deep

ruby-on-rails-3 - 工厂女孩序列不增加

ruby-on-rails - Rails 正在缓存范围内的结果

ruby-on-rails - 如何在邮件中指定标题[收件人]?

ruby-on-rails-3 - 如何使用 rspec 和 factory girl 设置我的身份验证数据?

ruby-on-rails - RSpec 无法从 Factorygirl 找到工厂

ruby - 您如何使用 Factory Girl 引用工厂内的类(class)?