代码之家  ›  专栏  ›  技术社区  ›  Argus9

FactoryGirl-忽略与特质的关联?

  •  4
  • Argus9  · 技术社区  · 7 年前

    假设我有以下几点 ActiveRecord

    class Car
      belongs_to :driver
    end
    
    class Driver
      # Has attribute :name
      has_one :car
    end
    

    我用这些模型定义了几个工厂:

    FactoryGirl.define do
      factory :car do
        association :driver
    
        trait :fast_car do
          association :driver, :fast
        end
      end
    end
    
    FactoryGirl.define do
      factory :driver do
        name 'Jason'
    
        trait :fast do
          name 'Mario'
        end
      end
    end
    

    当我执行以下代码时:

    car = FactoryGirl.create(:car, :fast_car)
    

    car.driver.name Mario Jason Driver 为了一辆快车?

    1 回复  |  直到 7 年前
        1
  •  6
  •   Igor Drozdov    7 年前

    幸运的是,你可以。您需要指定 factory 与数组关联的关键字,其中第一个元素是要用于关联的工厂的名称,其余元素是工厂的特征:

    FactoryGirl.define do
      factory :car do
        association :driver
    
        trait :fast_car do
          association :driver, factory: [:driver, :fast]
        end
      end
    end
    
    FactoryGirl.define do
      factory :driver do
        name 'Jason'
    
        trait :fast do
          name 'Mario'
        end
      end
    end