Ruby on Rails: функциональное тестирование: POST не отправляет необработанные данные XML - PullRequest
4 голосов
/ 11 июля 2011

У меня есть следующее:

  @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 голосов
/ 10 августа 2011

Есть ли причина, по которой вы не просто передаете параметры самому почтовому вызову?Например:

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

Тесты контроллера предназначены для проверки того, что действие контроллера выполняет то, что оно ожидает, когда вы отправляете ему параметры, о которых вы уже знаете.обычно они не предназначены для проверки парсинга xml на params.

Если вы просто хотите протестировать первое - тогда не беспокойтесь о превращении их в xml - просто передайте их как хеш- вам может понадобиться изучить что-то, что выходит за рамки испытаний рельсов (например, селен или раствор)

...