2012-10-24 68 views
1

以紅寶石的方式做這個更優雅的方式?我想這是件好事:創建一個數組的最佳方式是以同樣的方式生成多個對象?

([0]*5).collect { Factory :customer_pj } 

(1..5).to_a.collect { Factory :customer_pj } 

我的目標是5個初始化客戶並投入陣列。我碰巧在一個rspec測試中在let中這樣做。

+0

注意,在這樣的數據庫中創建許多對象,難免會讓你的測試很慢。 –

+0

好吧,我使用DatabaseCleaner.clean,感謝您提供有關 –

+0

的警告信息無論您的清理與否都無關緊要,觸擊數據庫是您在測試中可以做的最慢的事情之一,而且多次執行的次數會更糟。 –

回答

5
let(:customers) do 
    Array.new(5){ Factory :customer_pj } 
end 

由於安德魯·馬歇爾編輯的問題,相關部分變成了這樣:

Array.new(5){ Factory :customer_pj } 
+0

這就是所有維度的軟件質量... –

1
5.times.map { Factory :customer_pj } 
+0

它太棒了!但意味着隱式地創建數組,就像我的方式。但你的它更優雅。 –

相關問題