首页 > 解决方案 > 评估工厂的上下文以用作属性值

问题描述

我正在尝试干燥定义几个子类的用户工厂:

FactoryGirl.define do

  factory :user do

    transient do
      kind 'user'
    end

    sequence(:name) { |n| "Factory Girl #{kind} ##{n}" }

    factory :supervisor, class: User do
      kind 'supervisor'
      #...other stuff
    end

    factory :admin, class: User do
      kind 'supervisor'
      #...other stuff
    end

  end
end

目前我使用瞬态属性“kind”给用户一个反映他们是什么的名字,这在涉及许多用户的方便调试测试中派上用场

我想知道是否有一种方法可以使用工厂名称设置名称属性,例如:

FactoryGirl.define do

  factory :user do

    sequence(:name) { |n| "Factory Girl #{__FACTORY_NAME__} ##{n}" }

    factory :supervisor, class: User do
      #...other stuff
    end

    factory :admin, class: User do
      #...other stuff
    end

  end
end

我进行了挖掘,但似乎在评估工厂以实现这一目标时没有可用的上下文。这是一个正确的假设,还是我可以用他们的一些魔法来实现这一点!?

标签: ruby-on-railsfactory-bot

解决方案


推荐阅读