为什么这家工厂不工作?

Why this factory does not work?

我正在尝试单元测试我的 app.I 有一个 order 模型,这个模型有一个 attr_accessor register_client。如果访问器有一个值 1:

order.client = User.create

它可以工作,但是当我尝试对此进行测试时 - 我创建了一个工厂

FactoryGirl.define do

  factory :order do
    username Faker::Name.name
    register_client "1"
  end

end

它失败了:

order = FactoryGirl.create(:order)
order.client
=> nil

你应该这样做:

FactoryGirl.define do

  factory :user do
    #put necessary here
  end

  factory :order do

    trait :with_client do
      register_client "1"
      association :client, factory: :user
    end

    trait :unregistered_client do 
      username { Faker::Name.name }
    end

    factory :order_with_client,  traits: [:with_client]
  end

end

那么您将拥有:

FactoryGirl.create(:order, :with_client)
# same as
FactoryGirl.create(:order_with_client)

FactoryGirl.create(:order, :unregistered_client)