在测试中模拟嵌套参数
Simulating nested params in tests
我需要在测试中模拟发送参数,与这些输入将发送的相同:
<input id="quantity" name="quantities[9671]" type="number" value="1" />
<input id="quantity" name="quantities[9822]" type="number" value="1" />
测试看起来像这样:(使用 Test Unit,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
如果您将输入参数指定为:
"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}
我需要在测试中模拟发送参数,与这些输入将发送的相同:
<input id="quantity" name="quantities[9671]" type="number" value="1" />
<input id="quantity" name="quantities[9822]" type="number" value="1" />
测试看起来像这样:(使用 Test Unit,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
如果您将输入参数指定为:
"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}