Почему я получаю один и тот же объект, когда использую 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 }
Другие вопросы по тегам