ruby-on-rails - 获取 FactoryBot::DuplicateDefinitionError:工厂已经注册

标签 ruby-on-rails rspec ruby-on-rails-5 factory-bot

当我运行用户规范时,我收到 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/

相关文章:

ruby-on-rails - validate_presence_of 不会产生 'can' t be Blank' 错误

ruby-on-rails - 乘客:在任何来源中都找不到 rake-10.0.4 (Bundler::GemNotFound)

ruby-on-rails - 在 Redis 中存储数组 - RoR 4

ruby - 如何访问 rspec 中的描述文本

image-uploading - Shrine with Rails 多个多态图像上传

ruby-on-rails - Rails 5 升级停止回调配置问题

javascript - HAML 中的 JS 中的 Ruby : what's the syntax?

ruby-on-rails - Rails 3.1 中的并行处理? -- 检查断开的链接

java - 如何在turbolinks-android上加载网页内容

ruby-on-rails - 如何处理 RSpec 和 Rails 中的模拟嵌套资源?