2016-02-02 190 views
0

美好的一天!
我試圖在我的測試中創建模型時創建隨機值。使用factory_girl和攤販寶石faker和factory_girl煩惱

我的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: "[email protected]", 
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: "[email protected]", 
    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> 

再來一次 - 我試圖通過法克爾寶石隨機有效屬性每次我創建一個新的對象時,以獲取factory_girl。
你能幫我解決這個問題嗎?

回答

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 

順便說一句id會自動生成,隨意刪除id

+0

這不是我問過的。我在談論Faker – Elmor