Factory_bot: 定义 :post factory 时出现 DuplicateDefinitionError

创建于 2012-03-06  ·  3评论  ·  资料来源: thoughtbot/factory_bot

在 spec/factories/post_factory.rb 中:

FactoryGirl.define do
  factory :post do

    user
    title Faker::Lorem.sentence
    body Faker::Lorem.paragraphs

  end
end

有了这个,我收到了这个错误:

... factory_girl-2.6.1/lib/factory_girl/registry.rb:39:in `add_as': Factory already registered: post (FactoryGirl::DuplicateDefinitionError)

如果我将factory :post更改factory :a_post, class: Post或任何其他名称,它就可以正常工作。 我定义的唯一其他工厂是用户和会话(这些工作正常)。

我做错了什么,还是有一些自动定义的内部后工厂阻止我使用该名称?

最有用的评论

有几个潜在的问题,假设你 _100% 肯定_不存在其他后工厂(这是我要检查的第一件事)。 你在使用factory_girl_rails gem 和 Rails 3 吗? 如果是,请确保在您的 spec_helper 或测试期间加载的任何其他文件中的任何位置都不需要factory_girl_rails 。 另外,请确保您没有调用FactoryGirl.find_definitions ,这将加载所有工厂; 运行两次是查看此错误的可靠方法。 最后,你在任何地方打电话给require "spec/factories/post_factory"吗? factory_girl_rails将加载所有工厂,因此这是不必要的。

默认情况下,FactoryGirl 不会为您创建任何工厂,因此它不会干扰您的工厂。

所有3条评论

有几个潜在的问题,假设你 _100% 肯定_不存在其他后工厂(这是我要检查的第一件事)。 你在使用factory_girl_rails gem 和 Rails 3 吗? 如果是,请确保在您的 spec_helper 或测试期间加载的任何其他文件中的任何位置都不需要factory_girl_rails 。 另外,请确保您没有调用FactoryGirl.find_definitions ,这将加载所有工厂; 运行两次是查看此错误的可靠方法。 最后,你在任何地方打电话给require "spec/factories/post_factory"吗? factory_girl_rails将加载所有工厂,因此这是不必要的。

默认情况下,FactoryGirl 不会为您创建任何工厂,因此它不会干扰您的工厂。

好的。 显然,当我生成 post 模型时,创建了一个 test/factories/posts.rb,但由于我使用 RSpec,所以我只在 spec 目录中查找。

我删除了它,一切正常。 谢谢。

啊,厉害! 我想这很可能是罪魁祸首。

此页面是否有帮助?
0 / 5 - 0 等级