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.
Спасибо заранее!
Ответы
Ответ 1
Это функция, которую вы вызываете:
get(action, parameters = nil, session = nil, flash = nil)
Часть :format
по-прежнему является параметром, а не сеансом или флэш-памятью. Попробуйте:
get 'index', {:my_param => '1234', :format => :json}
О, важно отметить, используйте '= > ', а не '='... что хеш, а не назначение.