Перезагрузить factory _girl factory

Я хочу, чтобы при внесении изменений на фабриках я вижу их в консоли rails без перезагрузки всей консоли.

Я нашел несколько строк и протестировал их с плохим пониманием того, что происходит, документация для меня не ясна.

FactoryGirl.reload

Я также тестировал:

> FactoryGirl.factories.clear
> FactoryGirl.find_definitions # also tested FactoryGirl.factories.find_definitions
                               # but NoMethodError is raised
=> ActiveRecord::RecordNotFound: Couldn't find Address with ID=277 Torphy Squares

Ответ 1

Я использовал Faker. См. Раздел изменений, которые решили проблему:

# factories/building.rb, address is a string

- address    Faker::Address.street_address
+ address    { Faker::Address.street_address }

# factories/user.rb, email is a string

- email Faker::Internet.email
+ email { Faker::Internet.email }

И затем работает FactoryGirl.reload.

Ответ 2

Вы также можете использовать reload! для перезагрузки среды консоли, но она не перезагружает фабрики. Используйте FactoryGirl.reload, чтобы перезагрузить определения Factory. Он (re) загружает эти определения из следующих мест (см. документация):

test/factories.rb
spec/factories.rb
test/factories/*.rb
spec/factories/*.rb

Другие команды, которые вы упомянули, используются для очистки и загрузки определений. FactoryGirl.factories.clear очищает все загруженные определения Factory, а FactoryGirl.find_definitions перезагружает все определения из файла.

Обязательно используйте драгоценный камень factory_girl_rails, если вы используете Rails. Если вы, например, определили factory :user, вы можете использовать его в своей консоли с помощью FactoryGirl.build(:user) или FactoryGirl.create(:user). Это вернет экземпляр пользователя.

Если это не сработает, напишите несколько деталей.