【发布时间】:2014-08-04 06:49:34
【问题描述】:
我在 Rails 功能测试中发送一个 POST 请求,如下所示:
post :create, collection: { name: 'New Collection' }
collection 按预期以 JSON 编码的表单数据形式发送。
我不知道如何向 URL 添加查询。 The documentation 说我可以访问请求对象并在发送之前对其进行修改。所以我尝试了这个:
@request.GET[:api_key] = 'my key'
post :create, collection: { name: 'New Collection' }
但是,:api_key 永远不会出现在服务器上的 request.GET 哈希中。 (不过,当我通过另一个 HTTP 客户端发送它时,它确实如此。)
【问题讨论】:
-
我不知道它是否可以工作,但你试过
post 'create?api_key=my_key', collection: { name: 'New Collection' }吗? -
@MrYoshiji 不幸的是:“Minitest::UnexpectedError: ActionController::UrlGenerationError: 没有路由匹配”
-
为什么同时使用查询字符串和正文参数?这似乎很奇怪。通常,POST 仅使用正文参数。
-
@BSeven 我想将我的 POST 正文作为一些非表单数据格式发送,例如 applicaton/xml、application/json 等。
-
这不是很语义化。这应该在 Content-Type 标头中发送。除此之外,既然可以将其作为正文参数发送,为什么还要将其作为 URL 参数发送?
标签: ruby-on-rails functional-testing