【问题标题】:Simulating nested params in tests在测试中模拟嵌套参数
【发布时间】:2015-06-28 23:21:41
【问题描述】:

我需要在测试中模拟发送参数,就像这些输入会发送一样:

<input id="quantity" name="quantities[9671]" type="number" value="1" />
<input id="quantity" name="quantities[9822]" type="number" value="1" />

测试看起来像这样:(使用测试单元,Rails 中的默认测试框架):

test "placing item into basket"
  cart = Cart.new(session)

  post :create,
    product_variant_ids: [@product.variants.first.id],
    "quantities[#{@product.variants.first.id}]" => 1 # <<<------ not working 

  assert_equal 1, cart.items.count
end

【问题讨论】:

    标签: ruby-on-rails ruby testing tdd bdd


    【解决方案1】:

    如果您将输入参数指定为:

    "quantities[123]" => 1
    

    您必须稍后在您的控制器上使用:

    params["quantities[123]"]
    

    通常是这样的输入:

    <input id="quantity" name="quantities[9671]" type="number" value="1" />
    

    将作为嵌套哈希在您的参数中可用。对于上述情况,它将是这样的:

    params["quantities"]["9671"]
    

    所以在你的情况下,如果你像这样传递它应该可以工作:

    quantities: {@product.variants.first.id => 1}
    

    【讨论】:

      猜你喜欢
      • 2021-09-10
      • 1970-01-01
      • 2019-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-17
      • 2020-02-09
      • 1970-01-01
      相关资源
      最近更新 更多