当我在FactoryGirl和sample方法中使用create_list时,为什么会得到相同的对象?

时间:2012-11-22 04:00:37

标签: ruby-on-rails rspec factory-bot

我使用工厂女孩来定义这样的对象:

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 个答案:

答案 0 :(得分:4)

代码category ['Life', 'Course', 'Speek'].sample仅运行一次(定义工厂时)。如果您想在每次创建或构建event时生成新类别,可以使用sequence,如下所示:

sequence(:category) { ['Life', 'Course', 'Speek'].sample }