我有以下内容:
@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
我在这里做错了什么?
答案 0 :(得分:0)
你有没有理由不仅仅将params传递给post call本身?例如:
post "create", :api_key => api_key, :format => "xml", :params => data
控制器测试用于测试控制器操作是否在您发送已知的params时执行预期操作。他们通常不会测试将xml解析为params。
如果你只是想测试前者 - 那么不要费心将它们变成xml - 只需将它们作为哈希传递。
如果你真的想测试xml到params的解析 - 你可能需要研究在rails测试范围之外运行的东西(例如selenium或watir)