假設我要運行一個測試,並創造了許多Student
秒。每個學生都屬於一所學校。學校名稱由法克爾寶石給出,但是有他們的數量有限,學生被關聯到這些學校。FactoryGirl工廠可以重用現有的模型作爲協會
我可以使用FactoryGirl的方式,讓我重新使用現有的學校?即。新FactoryGirl.create(:student)
被分配到
- 一所新學校還沒有僞造=>學校僞造與
FactoryGirl.create(:school)
- 或已經存在的僞造學校=>學校已經是僞造的,並從DB 剛檢索
。
class Student
belongs_to :school, class_name: 'SchoolSociety'
end
class School
has_many :students
field :name
end
我相信這裏沒什麼關係,但我使用的是Mongoid。我的工廠會是什麼樣子
FactoryGirl.define do
factory :student, class: Student do
association(:school, factory: :school)
end
factory :school, class: School do
name { Faker::University.name }
end
end
一個解決方案是使用School.where(name: Faker::University.name)
,但我會失去FactoryGirls工廠的所有靈活性... 任何更好的解決方法嗎?
的情況下運行黃瓜測試與很多學生
編輯:
我的實際黃瓜情況下測試了增加根據數學公式涉及到當前的時間和(在已註冊的註冊用戶數的大獎學校)。我在做東西的
Scenario Outline: Jackpot increases with registrations and time
Given the current date is <date>
And <count> students have registered for the special event
When I am on the special event page
Then I should see "<jackpot> €"
Examples:
| date | count | jackpot |
| 2016/11/24 15:00:00 | 5 | 4 9 5 , 3 0 |
| 2016/11/30 15:00:00 | 10 | 4 9 7 , 6 0 |
| 2016/12/10 15:00:00 | 20 | 5 0 2 , 2 0 |
| 2016/12/10 15:00:00 | 150 | 6 5 2 , 2 0 |
現在喜歡,那些<count> students have registered for the special event
必須是屬於一個現有的學校(這意味着,在登記過程中的學生,他們必須與學校的電子郵件,其域名存在註冊/可映射在我們的數據庫一School
)
感謝您的回答,我編輯我的帖子以添加我的具體案例。大量用戶生成事件頭獎。 –
我會寫一個後臺步驟來解決你目前的情況'鑑於有數百名學生'。由於你的場景只對註冊特殊事件感興趣,所以學校無關緊要。爲了快速做到這一點,我可能會使用數據庫轉儲,Factory Girl在執行此操作時速度非常慢。 – diabolist
我進一步細化了我的問題以刪除不相關的東西,但學校在這裏很重要(實際上是提出問題的唯一原因)。只有在學校註冊時,學生纔可以註冊。但是,是的,我想轉儲可能是去這裏的最佳途徑... –