Ruby on rails 如何使用RSPEC测试多部分post

Ruby on rails 如何使用RSPEC测试多部分post,ruby-on-rails,ruby-on-rails-3,rspec,Ruby On Rails,Ruby On Rails 3,Rspec,我正尝试使用以下代码使用RSPEC测试多部分/表单post: @req = { :post => @attr } lambda { post :create, :POSTDATA => @req, :format => :json }.should change(Post, :count).by(1) 但我得到了以下错误: undefined method `stringify_keys' for "post":String POSTDATA是多部分表单名称

我正尝试使用以下代码使用RSPEC测试多部分/表单post:

@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--

我认为您正在尝试创建一个新对象(create方法),同时只向其传输一个散列

尝试:

不要让它成为常量POSTDATA,只需使用:post_data


还建议使用Factory Girl创建对象并用于测试。

我认为您试图创建一个新对象(创建方法),同时只向其传输一个哈希

尝试:

不要让它成为常量POSTDATA,只需使用:post_data


还建议使用Factory Girl创建对象并用于测试。

看看我似乎没有找到相关的答案。我不是要测试上传文件,你能告诉我我在那个链接上要找什么吗?嘿,Gal,我假设你正在测试上传任何文件,因为你使用的是“多部分/表单”请求。我知道我们用这个来上传东西。这是一个错误的假设。有没有关于如何使用RSPEC构建这样的请求的想法?看看吧,我似乎没有找到相关的答案。我不是要测试上传文件,你能告诉我我在那个链接上要找什么吗?嘿,Gal,我假设你正在测试上传任何文件,因为你使用的是“多部分/表单”请求。我知道我们用这个来上传东西。假设是错误的。你知道如何用RSPEC构建这样的请求吗?我用我试图构建的多部分请求的示例更新了问题我用我试图构建的多部分请求的示例更新了问题
 post :create, {:model_name => {hashed_parameter}, :format => :json }