我正在使用rails4 + rspec 3.我想进行HTTP调用,并传递两个参数(例如JSON正文或查询字符串)以及HTTP标头。我能够通过这两个中的一个,但不是两个。
当我尝试类似的事情时:
post api_v1_post_path(@myid), {} , {"X-Some-Header" => "MyValue"}
它工作正常,标题很好,但如果我做了类似的事情:
post api_v1_post_path(@myid), {"myparam" => "myvalue"} , {"X-Some-Header" => "MyValue"}
我收到以下错误:
Failure/Error: post api_v1_post_path(@myid), {"myparam" =>"myvalue"}, headers
ActionDispatch::ParamsParser::ParseError:
795: unexpected token at 'myparam'
有什么想法吗?
答案 0 :(得分:4)
似乎POST参数是JSON编码的。当应用程序尝试JSON解码未编码的参数时,会导致795: unexpected token at 'myparam'
。
将.to_json
与post params一起使用。
post api_v1_post_path(@myid), {"myparam" => "myvalue"}.to_json , {"X-Some-Header" => "MyValue"}
您可能想要使用let:
describe 'Test' do
let( :params ){{ myparam: 'myvalue' }}
let( :headers ){{ 'X-Some-Header' => 'MyValue' }}
it 'succeeds' do
post api_v1_post_path(@myid), params.to_json , headers