Ruby on rails 为什么在FactoryGirl和sample方法中使用create_list时会得到相同的对象?
我使用factory girl定义如下对象:Ruby on rails 为什么在FactoryGirl和sample方法中使用create_list时会得到相同的对象?,ruby-on-rails,rspec,factory-bot,Ruby On Rails,Rspec,Factory Bot,我使用factory girl定义如下对象: 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
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
时,我发现@events
中的所有事件都具有相同的类别
我想知道为什么以及如何解决它?提前感谢。代码类别['Life'、'Course'、'Speek']。示例只运行一次(定义工厂时)。如果要在每次创建或构建事件时生成新类别,可以使用序列,如下所示:
sequence(:category) { ['Life', 'Course', 'Speek'].sample }
代码category['Life'、'Course'、'Speek']。示例仅运行一次(定义工厂时)。如果要在每次创建或构建事件时生成新类别,可以使用序列,如下所示:
sequence(:category) { ['Life', 'Course', 'Speek'].sample }
哦,是的,非常感谢~不要创建序列,只需在样本周围放置一个块:类别{['Life','Course','Speek'].sample}
哦,是的,非常感谢~不要创建序列,只需在样本周围放置一个块:类别{['Life','Course','Speek'].sample}