【问题标题】:FactoryGirl create_list with different valuesFactoryGirl create_list 具有不同的值
【发布时间】:2014-11-18 21:43:44
【问题描述】:

我正在尝试使用 FactoryGirl 创建一个项目列表,但我需要这些项目不按顺序排列。这是我所拥有的,但我希望它是 DRYer。

spec.rb

context "three out of order" do
  before do
    FactoryGirl.create(:thing, ordering: 3)
    FactoryGirl.create(:thing, ordering: 1)
    FactoryGirl.create(:thing, ordering: 2)
  end

   it "should sort the things in order" do
    expect(Thing.all.map(&:ordering)).to eq([1, 2, 3])
   end
end

我知道您可以使用以下方法创建多个项目:

   FactoryGirl.create_list(:thing, ordering: 3 )

但我想创建项目,所以它测试了它们的顺序,因为我在工厂中设置了序列,所以它们会按顺序创建所有它们。

【问题讨论】:

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


    【解决方案1】:

    这个怎么样?

    before do
      (1..3).to_a.shuffle.each do |order|
        FactoryGirl.create(:thing, ordering: order)
      end
    end
    

    【讨论】:

    • 这是一个解决问题,但不回答问题的经典案例。显然可以这样做,它与原始示例非常相似,但这里的目标是用户 create_list 并使其更简单。问题不是“如何创建三个具有不同名称的模型”,而是“我可以使用 create_list 创建三个具有不同名称的模型”,遗憾的是这是不可能的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多