2

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

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

显然我遗漏了一些东西 - 使用 FactoryGirl 创建模型实例的正确方法是什么?

4

1 回答 1

2

你有一个带有属性电话的型号电话吗?

除此之外,他们的 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 吗?我的意思是你只想测试一次看看它是否有效,然后剩下的只是镇流器,因为你想要工作测试。

于 2012-09-29T18:34:16.433 回答