Factory_bot: DuplicateDefinitionError при определении фабрики: post

Созданный на 6 мар. 2012  ·  3Комментарии  ·  Источник: thoughtbot/factory_bot

В spec / factory / 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 или любое другое имя, оно будет работать нормально. Единственные другие фабрики, которые я определил, - это user и session (и они работают нормально).

Я что-то делаю не так, или есть какая-то внутренняя почтовая фабрика, которая определяется автоматически, что не позволяет мне использовать это имя?

Самый полезный комментарий

Есть пара потенциальных проблем, если вы _100% положительно_, никакой другой почтовой фабрики не существует (это первое, что я проверю). Вы используете гем factory_girl_rails и Rails 3? Если да, убедитесь, что вам не требуется factory_girl_rails где-либо в вашем spec_helper или любом другом файле, который будет загружен во время ваших тестов. Также убедитесь, что вы не вызываете FactoryGirl.find_definitions , который загрузит все фабрики; двойной запуск - верный способ увидеть эту ошибку. Наконец, вы куда-нибудь звоните require "spec/factories/post_factory" ? factory_girl_rails загрузит все фабрики, поэтому в этом нет необходимости.

FactoryGirl по умолчанию не создает для вас никаких фабрик, поэтому это не помешает вашей фабрике.

Все 3 Комментарий

Есть пара потенциальных проблем, если вы _100% положительно_, никакой другой почтовой фабрики не существует (это первое, что я проверю). Вы используете гем factory_girl_rails и Rails 3? Если да, убедитесь, что вам не требуется factory_girl_rails где-либо в вашем spec_helper или любом другом файле, который будет загружен во время ваших тестов. Также убедитесь, что вы не вызываете FactoryGirl.find_definitions , который загрузит все фабрики; двойной запуск - верный способ увидеть эту ошибку. Наконец, вы куда-нибудь звоните require "spec/factories/post_factory" ? factory_girl_rails загрузит все фабрики, поэтому в этом нет необходимости.

FactoryGirl по умолчанию не создает для вас никаких фабрик, поэтому это не помешает вашей фабрике.

Welp. Очевидно, когда я сгенерировал пост-модель, был создан test / factoryies / posts.rb, но я смотрел только в директорию spec, так как я использую RSpec.

Я удалил это, и все работает. Спасибо.

Ах, круто! Я подумал, что это, вероятно, виноват.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги