Factory_bot: DuplicateDefinitionError ao definir um: post factory

Criado em 6 mar. 2012  ·  3Comentários  ·  Fonte: thoughtbot/factory_bot

Em spec / factories / post_factory.rb:

FactoryGirl.define do
  factory :post do

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

  end
end

Com isso, recebo este erro:

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

Se eu mudar factory :post para factory :a_post, class: Post ou qualquer outro nome, funcionará bem. As únicas outras fábricas que defini são usuário e sessão (e essas funcionam bem).

Estou fazendo algo errado ou há algum post-factory interno definido automaticamente que me impede de usar esse nome?

Comentários muito úteis

Existem alguns problemas potenciais, supondo que você tenha _100% positivo_ que nenhuma outra pós-fábrica exista (essa é a primeira coisa que eu verificaria). Você está usando a gema factory_girl_rails e Rails 3? Em caso afirmativo, certifique-se de não exigir factory_girl_rails em qualquer lugar em seu spec_helper ou qualquer outro arquivo que seria carregado durante seus testes. Além disso, certifique-se de não estar chamando FactoryGirl.find_definitions , o que carregará todas as fábricas; executá-lo duas vezes é uma maneira infalível de ver esse erro. Finalmente, você está ligando para require "spec/factories/post_factory" algum lugar? factory_girl_rails carregará todas as fábricas, então isso é desnecessário.

FactoryGirl não cria nenhuma fábrica para você por padrão, então não vai interferir na sua fábrica.

Todos 3 comentários

Existem alguns problemas potenciais, supondo que você tenha _100% positivo_ que nenhuma outra pós-fábrica exista (essa é a primeira coisa que eu verificaria). Você está usando a gema factory_girl_rails e Rails 3? Em caso afirmativo, certifique-se de não exigir factory_girl_rails em qualquer lugar em seu spec_helper ou qualquer outro arquivo que seria carregado durante seus testes. Além disso, certifique-se de não estar chamando FactoryGirl.find_definitions , o que carregará todas as fábricas; executá-lo duas vezes é uma maneira infalível de ver esse erro. Finalmente, você está ligando para require "spec/factories/post_factory" algum lugar? factory_girl_rails carregará todas as fábricas, então isso é desnecessário.

FactoryGirl não cria nenhuma fábrica para você por padrão, então não vai interferir na sua fábrica.

Welp. Aparentemente, quando eu gerei o modelo de post, um test / factories / posts.rb foi criado, mas eu estava apenas procurando no diretório spec porque uso RSpec.

Eu removi isso e tudo funciona. Obrigado.

Ah, incrível! Achei que provavelmente fosse o culpado.

Esta página foi útil?
0 / 5 - 0 avaliações