我正在尝试使用以下代码测试带有RSPEC的multipart / form帖子:
@req = { :post => @attr }
lambda {
post :create, :POSTDATA => @req, :format => :json
}.should change(Post, :count).by(1)
但是我收到以下错误:
undefined method `stringify_keys' for "post":String
POSTDATA是多部分表单名称。
测试多部分请求的正确方法是什么?
编辑:
我发现像我在上面那样构建请求只是构建一个嵌套的JSON请求。如何构建多个帖子/表单请求?
我想构建一个看起来像那样的多部分请求:
POST /api/posts.json HTTP/1.1
Accepts: application/json
X-API-KEY: 7d867d16a5e25337b6d7857965f812bee73b76ac
Content-Length: 288
Content-Type: multipart/form-data; boundary=syoYQUQsGwI2XqShQimFdv2QSe-_GYbjVx40T1kS
Host: 10.0.2.2:3000
Connection: Keep-Alive
User-Agent: Apache-HttpClient/UNAVAILABLE (java 1.4)
--syoYQUQsGwI2XqShQimFdv2QSe-_GYbjVx40T1kS
Content-Disposition: form-data; name="POSTDATA"
Content-Type: application/json; charset=UTF-8
Content-Transfer-Encoding: 8bit
{"tags":["dffdff"],"location_id":3,"post":{"content":"test #dffdff"}}
--syoYQUQsGwI2XqShQimFdv2QSe-_GYbjVx40T1kS--
答案 0 :(得分:0)
我认为您尝试创建一个新对象(创建方法),同时只向其传输一个哈希值。
尝试:
post :create, {:model_name => {hashed_parameter}, :format => :json }
并且不要使它成为常量POSTDATA,只需使用:post_data。
并建议使用Factory Girl创建对象并用于测试。