abo*_*nec 7 testing ruby-on-rails functional-testing
我有一个rails控制器,在这里定义:
https://github.com/abonec/Simple-Store/blob/master/app/controllers/carts_controller.rb
在购物车页面上,用户可以通过发布嵌套属性来指定line_items的数量.参数如下所示:
{ "cart" => {
"line_items_attributes" => {
"0" => {
"quantity" => "2",
"id" => "36" } } },
"commit" => "Update Cart",
"authenticity_token" => "UdtQ+lchSKaHHkN2E1bEX00KcdGIekGjzGKgKfH05So=",
"utf8"=>"\342\234\223" }
Run Code Online (Sandbox Code Playgroud)
在我的控制器动作中,这些参数保存如下:
@cart.update_attributes(params[:cart])
Run Code Online (Sandbox Code Playgroud)
但我不知道如何在测试中测试这种行为.@cart.attributes仅生成模型属性而不是嵌套属性.
我该如何测试这种行为?如何在我的功能测试中使用嵌套属性模拟post请求?
派对有点晚,但你不应该从控制器测试这种行为.嵌套属性是模型行为.控制器只是将任何东西传递给模型.在您的控制器示例中,没有提及任何嵌套属性.您希望测试accepts_nested_attributes_for模型中创建的行为是否存在
你可以使用rSpec测试这个:
it "should accept nested attributes for units" do
expect {
Cart.update_attributes(:cart => {:line_items_attributes=>{'0'=>{'quantity'=>2, 'other_attr'=>"value"}})
}.to change { LineItems.count }.by(1)
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4716 次 |
| 最近记录: |