Почему я получаю один и тот же объект, когда использую create_list в FactoryGirl и методе sample?
Я использую фабричную девушку, чтобы определить объект следующим образом:
factory :event do
#...
category ['Life', 'Course', 'Speek'].sample
#...
end
Тогда в spec/models/event_spec.rb
, У меня есть это:
before(:each) do
@events = FactoryGirl.create_list(:event, 10, node: school)
end
#...
binding.pry
Но когда я использовал pry, чтобы проверить @events
Я обнаружил, что все event
в @events
имеет то же самое category
,
Я хочу знать, почему и как это решить? Заранее спасибо.
1 ответ
Решение
Код category ['Life', 'Course', 'Speek'].sample
запускается только один раз (когда фабрика определена). Если вы хотите создавать новую категорию каждый раз event
создан или построен, вы можете использовать sequence
следующее:
sequence(:category) { ['Life', 'Course', 'Speek'].sample }