我想为我在 Ruby on Rails 应用程序中工作的 RESTful Web 服务编写功能测试。
测试是一个 POST 请求,其中请求的主体是纯 XML 文档而不是表单。有关如何执行此操作的任何指示?我遇到的问题是如何在对 post 方法的调用中指定正文 XML。
我想为我在 Ruby on Rails 应用程序中工作的 RESTful Web 服务编写功能测试。
测试是一个 POST 请求,其中请求的主体是纯 XML 文档而不是表单。有关如何执行此操作的任何指示?我遇到的问题是如何在对 post 方法的调用中指定正文 XML。
以下对我有用:
@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
我实际上是@xml_request_headers
在我的setup
方法中定义的,并且可以在这个文件的所有测试中使用它。test_helper.rb
如果更多文件需要它,也许将它放在一个好主意。
我刚刚使用 Net:HTTP 编写了一个测试脚本来测试 REST 服务。