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)
是管理员
正如您在中所看到的,您可以同时使用不同的特性