Nul*_*uli 5 testing ruby-on-rails 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"
Run Code Online (Sandbox Code Playgroud)
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"=>"****"}
Run Code Online (Sandbox Code Playgroud)
哪个...我想没问题,但是 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
Run Code Online (Sandbox Code Playgroud)
我在这里做错了什么?
您是否有理由不将参数传递给 post 调用本身?例如:
post "create", :api_key => api_key, :format => "xml", :params => data
Run Code Online (Sandbox Code Playgroud)
控制器测试用于测试当您向控制器发送已知的参数时,控制器操作是否执行其期望的操作。它们通常不会测试将 xml 解析为参数。
如果您只想测试前者 - 那么不必费心将它们制作成 xml - 只需将它们作为散列传递即可。
如果您确实想测试将 xml 解析为参数 - 您可能需要研究在 Rails 测试范围之外运行的内容(例如 selenium 或 watir)
| 归档时间: |
|
| 查看次数: |
1485 次 |
| 最近记录: |