Ruby 是否有任何方法可以使用Factory Bot从同一资源创建不同的工厂?

Ruby 是否有任何方法可以使用Factory Bot从同一资源创建不同的工厂?,ruby,rspec,factory-bot,Ruby,Rspec,Factory Bot,我有这样一个用户工厂: FactoryBot.define do factory :user do email { 'doo@d.com' } password { 'password' } password_confirmation { 'password' } admin { true } confirmed_at Time.now end end 我在我的功能规范中使用了如下内容: user=create(:user) 但是我希望能够为不同

我有这样一个用户工厂:

FactoryBot.define do
  factory :user do
    email { 'doo@d.com' }
    password { 'password' }
    password_confirmation { 'password' }
    admin { true }
    confirmed_at Time.now
  end
end
我在我的功能规范中使用了如下内容:

user=create(:user)


但是我希望能够为不同的测试用例提供不同的参数。例如,我想要一个带有
admin{false}
的用户工厂。有什么方法可以做到这一点吗?

你试过类似的方法吗

FactoryBot.define do
  factory :user do
    email { 'doo@d.com' }
    password { 'password' }
    password_confirmation { 'password' }
    admin { false }
    confirmed_at Time.now

    factory :admin do 
      admin { true }
    end
  end
end

admin = create(:admin)
仅使用特征:

FactoryBot.define do
  factory :user do
    email { 'doo@d.com' }
    password { 'password' }
    password_confirmation { 'password' }
    admin { false }
    confirmed_at { Time.now }

    trait :admin do
      admin { true }
    end
  end
end
因此,
FactoryBot.create(:user)
是普通用户,
FactoryBot.create(:user,:admin)
是管理员

正如您在中所看到的,您可以同时使用不同的特性