Перезагрузить 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)
. Это вернет экземпляр пользователя.
Если это не сработает, напишите несколько деталей.