Ruby on Rails:功能测试:POST不发送原始XML数据

时间:2011-07-11 16:43:54

标签: ruby-on-rails testing http-post functional-testing

我有以下内容:

  @request.env['RAW_POST_DATA']  = data
  @request.env['CONTENT_TYPE'] = 'application/xml' 
  @request.env['HTTP_CONTENT_TYPE'] = 'application/xml'
  post "create", :api_key => api_key, :format => "xml"

和test.log显示了这个:

Processing ****Controller#create to xml (for 0.0.0.0 at 2011-07-08 15:40:20) [POST]
  Parameters: {"format"=>"xml", "action"=>"create", "api_key"=>"the_hatter_wants_to_have_tea1", "controller"=>"****"}

其中......我猜这很好,但是RAW_POST_DATA在日志中的参数列表中没有显示为哈希....现在......当我使用curl从终端调用动作时它可以正常工作:

curl -H 'Content-Type: application/xml' -d '<object><name>Das Object</name></object>' http://notAvailableDuringTesting.butWorksInDevelopmentMode.dev/object.xml?api_key=the_hatter_wants_to_have_tea1

我在这里做错了什么?

1 个答案:

答案 0 :(得分:0)

你有没有理由不仅仅将params传递给post call本身?例如:

 post "create", :api_key => api_key, :format => "xml", :params => data

控制器测试用于测试控制器操作是否在您发送已知的params时执行预期操作。他们通常不会测试将xml解析为params。

如果你只是想测试前者 - 那么不要费心将它们变成xml - 只需将它们作为哈希传递。

如果你真的想测试xml到params的解析 - 你可能需要研究在rails测试范围之外运行的东西(例如selenium或watir)