Должно быть:
first_name { Faker::Name.unique.first_name }
last_name { Faker::Name.unique.last_name }
При загрузке Faker::Name.unique.first_name
будет оцениваться.Поэтому используйте блоки.
Редактировать:
FactoryBot.define do
factory :profile do
first_name Faker::Name.unique.first_name
end
end
В этом примере Faker::Name.unique.first_name
будет оцениваться один раз, во время определения фабрики (когда файл загружается / требуется).Если он находит уникальное значение, скажем «Джон Доу», оно будет использоваться для каждого элемента, созданного этой фабрикой.
Или другими словами: после загрузки файла и оценки Faker::Name.unique.first_name
вы можете думать об этой фабрике, как если бы она была:
FactoryBot.define do
factory :profile do
first_name 'John Doe'
end
end
Когда вы используете блоки - тело блокабудет оцениваться каждый раз, когда вы звоните create(:profile)
или build(:profile)
.Часть Faker::Name.unique.first_name
внутри блока будет вызываться каждый раз и возвращать разные уникальные результаты.