簡體   English   中英

FactoryGirls多個協會

[英]FactoryGirls multiple associations

我很難思考這一點。 我是FactoryGirl的新手,所以可能在某處清楚地解釋了這一點,對於這種情況,我深表歉意。 這當然不是一個獨特的問題,也許我的Google技能還沒有達到標准。

我正在處理訂單,這些訂單屬於類別並且屬於客戶。 我正在嘗試建立一個下了5個訂單的客戶,但是在嘗試建立類別(要求一個唯一的名稱)時,我不斷拋出獨特的錯誤。

功能/ customer_spec.rb

RSpec.feature "Customer management", :type => :feature do
    scenario "Customer with orders has order history" do
        customer = create(:customer, :with_5_completed_orders)
        visit customer_path(customer)
        expect(page).to have_content("Recent Orders")
    end
end

工廠/ customers.rb

FactoryGirl.define do

    factory :customer do

        ...

        trait :with_5_completed_orders do
            after :create do |customer|
            create_list(:order_line, 5, :completed, :customer => customer)
        end
      end
   end
end

工廠/ order_line.rb

FactoryGirl.define do
    factory :order_line do
        ....
        product
        ....
    end
end

工廠/ product.rb

FactoryGirl.define do

    factory :product do |f|
        ....
        category
        ....
    end
end

工廠/ categories.rb

FactoryGirl.define do
    sequence :category_name do |n|
      "category-#{n}"
    end

   factory :category do
       name { generate(:category_name) } 
   end
end

如果我理解正確,則類別名稱唯一性有問題。

您可以使用序列通過FactoryGirl生成唯一的類別名稱:

sequence :category_name do |n|
  "category-#{n}"
end

factory :category do
  name { generate(:category_name) } 
end

關於序列的 FactoryGirl文檔也值得一讀。

如果您打算重復使用同一類別兩次,則可以先創建一個類別,然后按所有順序重復使用它:

trait :with_5_completed_orders do
  after :create do |customer|
    cat = generate(:category)
    create_list(:order_line, 5, :completed, customer: customer, category: cat)
  end
end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM