Rails 3 - Тестирование метода GET контроллера - попытка использовать JSON и получение 406 ошибок - PullRequest
12 голосов
/ 12 апреля 2011

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

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, как я запрашиваю в коде.

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

Я на Mac с Ruby 1.9 и Rails 3.0.5.

Заранее спасибо!

1 Ответ

26 голосов
/ 12 апреля 2011

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

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

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

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

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

...