Подтвердить что ты не робот

Rails 3 - Тестирование контроллера GET - попытка использовать JSON и получить 406 ошибок

У меня есть простой контроллер, который указывает:

respond_to :json

Когда я пытаюсь создать функциональный тест, который вызывает его следующим образом:

test "GET" do
  get 'index', :format => :json
end

Все работает отлично. Если, однако, я пытаюсь передать параметр запроса следующим образом:

test "GET" do
  get 'index', {:my_param = '1234'}, :format => :json
end

Я получаю ошибку 406, возвращенную с контроллера. Если я отбрасываю ответ через response.inspect, я вижу, что @status = 406 и @header имеют тип содержимого text/html. Если я удаляю ответ через response.inspect для простого случая, который не передает параметр запроса, я вижу, что @header имеет тип содержимого application/json, как я запрашиваю в коде.

Есть ли у кого-нибудь идеи, что я делаю неправильно здесь? Я подозреваю, что я задираю рубиновый синтаксис с помощью хэшей или чего-то другого, но я натыкаюсь на стену и никуда не уйду.

Я нахожусь на Mac с Ruby 1.9 и Rails 3.0.5.

Спасибо заранее!

4b9b3361

Ответ 1

Это функция, которую вы вызываете:

get(action, parameters = nil, session = nil, flash = nil) 

Часть :format по-прежнему является параметром, а не сеансом или флэш-памятью. Попробуйте:

get 'index', {:my_param => '1234', :format => :json}

О, важно отметить, используйте '= > ', а не '='... что хеш, а не назначение.