Rails控制器测试:获取查询参数没有正确编码

时间:2016-11-22 01:56:46

标签: testing controller ruby-on-rails-5

我的控制器测试中有以下行:

get brands_url, params: { test: 1, test2: 2}, as: :json

我想测试api请求brands?test=1&test1=2

在控制器索引方法中,params对象最终看起来像:

<ActionController::Parameters {"{\"test\":1,\"test2\":2}"=>nil, "controller"=>"brands", "action"=>"index", "format"=>"json", "brand"=>{}} permitted: false>

params散列被转换为json并被解释为键。

如果我删除as: :json选项,我会得到我认为应该是预期的行为:

<ActionController::Parameters {"test"=>"1", "test2"=>"2", "controller"=>"brands", "action"=>"index"} permitted: false>

有关为何发生这种情况的任何想法?

2 个答案:

答案 0 :(得分:0)

brands?test=1?test1=2

不是有效的网址。尝试将第二个?更改为&

brands?test=1&test1=2

答案 1 :(得分:0)

我不是将params传递给params哈希,而是必须将参数传递给url helper brands_url。以下工作如下:

get brands_url(test: 1, test2: 2), as: :json, xhr: true

根据铁道文件,原始技术应该有效。