将参数发送到块中的每个方法调用

时间:2017-03-13 19:33:09

标签: ruby factory-bot

而不是:

calc(a: 1, b: 2, c: 3)
calc(a: 1, b: 2, c: 10)
calc(a: 1, b: 2, c: 2)
calc(a: 1, b: 2, c: 103)
calc(a: 1, b: 2, c: 98)

我愿意:

with_parameters(a: 1, b: 2) do
  calc(c: 3)
  calc(c: 10)
  calc(c: 2)
  calc(c: 103)
  calc(c: 98)
end

上下文是我正在尝试为FactoryGirl执行此操作,例如创建许多类似的工厂

修改:实际上我很确定某些method_missing + send可以做到这一点

1 个答案:

答案 0 :(得分:1)

对于工厂女孩来说,不需要任何花哨的技巧

let(:base_params) { { a: 1, b: 2} }

let(:things) { 
  [3, 10, 2].map do |c|
    create(:whatever, base_params.merge(c: c))   
  end
}