【问题标题】:how to test multipart post with RSPEC如何使用 RSPEC 测试多部分帖子
【发布时间】:2012-04-10 06:36:08
【问题描述】:

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

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

【问题讨论】:

  • 我似乎没有在那里找到相关的答案。我不是在尝试测试文件的上传
  • 维克,您能指出我在该链接上要查找的内容吗?
  • 嘿 Gal,我假设您正在尝试上传任何文件,因为您正在使用 'multipart/form' 请求。据我所知,我们用它来上传东西。这是错误的假设。
  • 任何想法如何使用 RSPEC 构建此类请求?

标签: ruby-on-rails ruby-on-rails-3 rspec


【解决方案1】:

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

试试:

 post :create, {:model_name => {hashed_parameter}, :format => :json }

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

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

【讨论】:

  • 我用我正在尝试构建的多部分请求的示例更新了问题
猜你喜欢
  • 2016-05-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-11
  • 2020-05-08
  • 1970-01-01
  • 2011-11-10
相关资源
最近更新 更多