2013-07-03 44 views
0

它我factorygirl代碼運行第二次當數避免factorygirl repeate黃瓜

FactoryGirl.define do 
    factory :account do 
     sequence :name do |n| 
     "Test Account#{n}" 
     end 
    end 
    end 

這是我跑factorygirl碼方法

def create_accounts n=2 
    n.times do 
     FactoryGirl.create(:account, subscription_ids: @sub.id.to_s) 
    end 
    end 

我的問題是,第一次我FactoryGirl輸出Test Account1, Test Account2,當我執行第二次,它創建輸出爲Test Account3, Test Account4。但是我多次運行時需要Test Account1, Test Account2。我該如何做到這一點。

感謝您的建議

回答

0

我解決了這個問題後,將這段代碼

def create_accounts n=1 
    create_subscription 
    n.times do |r| 
    r += 1 
    FactoryGirl.create(:account, subscription_ids: @sub.id.to_s, name: "Test Account#{r}") 
    end 
end 

更新

我使用的黃瓜 - >水豚 - >硒

恢復出廠女孩序列

加此代碼在spec-> support-> reset.rb

module FactoryGirl 
    def self.reload 
    self.factories.clear 
    self.sequences.clear 
    self.traits.clear 
    self.find_definitions 
    end 
end 

在env.rb

After do 
    FactoryGirl.reload 
end 
1

FactoryGirl旨在創建新的唯一記錄每次調用#create時間。如果你想保留原始記錄,你應該將它們保存到一個變量中,然後返回它們而不是再次運行FactoryGirl.create。

1

添加這個你也可以使用database_cleaner寶石每次測試後清理數據庫。這有助於防止從數據庫狀態出現的任何問題。

+0

我已經在我的項目中使用了。非常感謝。如果我對database_cleaner有任何疑問,我會問你。 :) – Selvamani