当我运行用户规范时,我收到 FactoryBot::DuplicateDefinitionError:Factory alreadyregistered:user 错误。我想创建多个具有不同名称和年龄的用户对象。我在工厂目录中的 user.rb 是
FactoryBot.define do
@users = [{display_name: 'abc', age: 25}, {display_name: 'xyz', age: 30}]
@users.each do |user|
factory :user do
display_name user[:display_name]
age user[:age]
end
end
end
这段代码有什么问题吗?
谢谢
最佳答案
我相信这是使用 FactoryBot 特征的一个很好的例子。
永远只能有一个命名工厂,但 trait 允许该命名工厂发生变化。
考虑这样的事情:
FactoryBot.define do
factory :user do
trait :bob do
display_name { 'Bob' }
age { 30 }
end
trait :jimmy do
display_name { 'Jimmy' }
age { 26 }
end
end
end
然后,当你需要 Jimmy 时,你可以像这样调用用户工厂:
FactoryBot.create :user, :jimmy
或者,如果您需要鲍勃,请这样称呼它:
FactoryBot.create :user, :bob
希望这可以帮助。
关于ruby-on-rails - 获取 FactoryBot::DuplicateDefinitionError:工厂已经注册,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52202169/