Ruby on Rails中RESTful POST的function测试

我想编写一个RESTful Web服务的function测试,我正在使用Ruby on Rails应用程序。

测试是POST请求,其中请求的主体是纯XML文档而不是表单。 有关如何做到这一点的任何指示? 我遇到的问题是如何在post方法的调用中指定body XML。

以下对我有用:

@request.env['RAW_POST_DATA'] = MY_XML_STRING post :create 

您可以通过将@request.env['RAW_POST_BODY']设置为所需的输入流来实现。

我在http://de.softuses.com/6051找到了以下解决方案

 message = ' content' @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中弃用 ,只能在willa gem中使用。

我刚刚使用Net:HTTP编写了一个测试脚本来测试REST服务。