Как отправить необработанные данные в функциональном тесте Rails? - PullRequest
52 голосов
/ 20 января 2010

Я хочу отправить необработанные данные поста (например, непараметизированный JSON) на один из моих контроллеров для тестирования:

class LegacyOrderUpdateControllerTest < ActionController::TestCase
  test "sending json" do
    post :index, '{"foo":"bar", "bool":true}'
  end
end

но это дает мне NoMethodError: undefined method `symbolize_keys' for #<String:0x00000102cb6080> ошибку.

Как правильно отправлять необработанные данные в ActionController::TestCase?

Вот код контроллера:

def index
  post_data = request.body.read
  req = JSON.parse(post_data)
end

Ответы [ 12 ]

0 голосов
/ 20 января 2010

Метод post ожидает хэш пар имя-значение, поэтому вам нужно сделать что-то вроде этого:

post :index, :data => '{"foo":"bar", "bool":true}'

Затем, в вашем контроллере, получите данные для анализа следующим образом:

post_data = params[:data]
0 голосов
/ 20 января 2010
post :index, {:foo=> 'bar', :bool => 'true'}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...