【发布时间】:2008-12-03 07:59:29
【问题描述】:
我想为我在 Ruby on Rails 应用程序中处理的 RESTful Web 服务编写功能测试。
测试是一个 POST 请求,其中请求的主体是纯 XML 文档而不是表单。有关如何执行此操作的任何指示?我遇到的问题是如何在 post 方法的调用中指定 body XML。
【问题讨论】:
标签: ruby-on-rails ruby unit-testing rest post
我想为我在 Ruby on Rails 应用程序中处理的 RESTful Web 服务编写功能测试。
测试是一个 POST 请求,其中请求的主体是纯 XML 文档而不是表单。有关如何执行此操作的任何指示?我遇到的问题是如何在 post 方法的调用中指定 body XML。
【问题讨论】:
标签: ruby-on-rails ruby unit-testing rest post
以下内容对我有用:
@request.env['RAW_POST_DATA'] = MY_XML_STRING
post :create
【讨论】:
您可以通过将@request.env['RAW_POST_BODY'] 设置为所需的输入流来做到这一点。
【讨论】:
我在http://de.softuses.com/6051找到了以下解决方案
message = '<?xml version="1.0" encoding="UTF-8"?>
<tag>content</tag>'
@xml_request_headers ||= {}
@xml_request_headers['HTTP_ACCEPT'] = @xml_request_headers['CONTENT_TYPE'] = 'application/xml'
post '/controller/action.xml', message, @xml_request_headers
我实际上在我的setup 方法中定义了@xml_request_headers,并且可以在这个文件的所有测试中使用它。如果更多文件需要,最好将其发送至test_helper.rb。
【讨论】:
查看shoulda 的“should_be_restful”宏。这个宏很快将是来自 shoulda 的 deprecated,并且仅在 woulda gem 中可用。
【讨论】:
我刚刚使用 Net:HTTP 编写了一个测试脚本来测试 REST 服务。
【讨论】: