faker和factory_girl麻烦

时间:2016-02-02 09:40:44

标签: ruby-on-rails ruby rspec factory-bot faker

美好的一天!
在我的测试中创建模型时,我正在尝试创建随机值。使用factory_girl和faker gems

我的gemfile.lock

factory_girl_rails (4.5.0)
factory_girl (~> 4.5.0)
faker (1.6.1)

我将工厂定义如下

FactoryGirl.define do
  factory :action do
    name Faker::Internet.email
    id Faker::Number.digit
    ip Faker::Internet.ip_v4_address
    old_value Faker::Number.number(7)
  end
end

但在我的测试中,当我尝试创建对象时,它们具有相同的属性。

> create :logger
 id: 17,
 new_value: 3133860,
 name: "fidel_murazik@gibson.biz",
 ip: "118.247.64.189",
 created_at: Tue, 02 Feb 2016 09:12:50 UTC +00:00,
 updated_at: Tue, 02 Feb 2016 09:12:50 UTC +00:00>

第二次

    > create :logger
     id: 18,
     new_value: 3133860,
     name: "fidel_murazik@gibson.biz",
     ip: "118.247.64.189",
     created_at: Tue, 02 Feb 2016 09:12:53 UTC +00:00,
     updated_at: Tue, 02 Feb 2016 09:12:53 UTC +00:00>

再一次 - 每当我创建一个新对象时,我都试图通过Faker gem随机获取factory_girl的有效属性。
你能帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

每次运行时,您都可以使用sequence生成不同的数据:

FactoryGirl.define do
  factory :action do
    sequence(:name) { |n| "user_#{n}@factory.com" }
    sequence(:id) { |n| Faker::Number.digit + n }
    ip Faker::Internet.ip_v4_address
    old_value Faker::Number.number(7)
  end
end

Btw id会自动生成,随时删除id