工厂女孩:多次使用同一个物体

时间:2016-07-12 05:12:09

标签: ruby json factory-bot

我正在构建一个工厂方法,该方法将在JSON中保存一些信息,以便以后在应用程序中进行分析。

这些电路板将围绕它们进行电镀,因此JSON将包含每个寄存器的ID。

例如,我们可以使用电镀1和2。

我需要生成看起来像这样的板子:

width: 500
height: 500
platings: {"up": 1, left: 2, right: 1}

所以我可以在一个工厂上不止一次使用id,但是我无法这样做,因为每次创建电镀时我都会得到另一个ID。

这是我试图做的一个例子

Factory :medium_board do
  width 500
  height 500
  platings {{
    "up": create(:plating).id, #id: 1 OK
    "left": create(:another_plating).uuid, #id: 2, OK
    "right": create(:plating).uuid #id: 3, NOT OK, should have been 1.
  }}
end

我跳过的是什么基本的东西? 这是最好的方法吗? 最好

1 个答案:

答案 0 :(得分:2)

我会在这里使用after钩子。像这样:

factory :medium_board do

  after :build do |board|
    plating1 = create(:plating)
    plating2 = create(:another_plating)

    board.platings = {
      up: plating1.id,
      left: plating2.id,
      right: plating1.id,
    }
  end
end