В спецификации контроллера я могу установить заголовок принятия http следующим образом:
request.accept = "application/json"
но в спецификации запроса объект «запрос» равен нулю. Так как я могу это сделать здесь?
Причина, по которой я хочу установить заголовок http accept в json, заключается в том, что я могу сделать это:
get '/my/path'
вместо этого
get '/my/path.json'
ruby-on-rails
json
testing
rspec
Сергей
источник
источник
get '/my/path', nil, {'HTTP_ACCEPT' => "application/json"}
:authorization
.get my_resource_path, params: {}, headers: { 'HTTP_ACCEPT' => "application/json" }
`Я использовал это в Test :: Unit:
источник
ActionController::TestCase
Cookie
в хэше заголовков (потому что это то, что отправляет мой браузер), но это не сработало. Потом я сделалrequest.keys
и увидел ключ с названиемHTTP_COOKIE
. Использование этого сработало. Они действительно должны лучше документировать это.Это работает для спецификаций контроллера, а не для спецификаций запроса:
источник
request.headers
илиrequest.env
Я добавляю это здесь, так как я сильно застрял, пытаясь сделать это в Rails 5.1.rc1
Сигнатура метода get теперь немного изменилась.
Вам необходимо указать параметры после пути в качестве аргументов ключевого слова, т.е.
get /some/path, headers: {'ACCEPT' => 'application/json'}
К вашему сведению, полный набор аргументов ключевых слов:
params: {}, headers: {}, env: {}, xhr: false, as: :symbol
источник
Мне нужно настроить заголовки отдельно
Попытка отправить его через get / delete / .... - это полный мусор в rails4 и вызывает боль в моей голове, потому что он никогда не отправляется как заголовок, а как параметр.
источник
Использование rspec с
Rack::Test::Methods
Заголовок var будет выглядеть как
X-Your-Header-Var
источник
Test::Unit
для RSpec, а не для него.ndefined method 'header'
у меня ошибку.С RSpec 3 вы можете использовать следующий синтаксис
Как описано в официальной документации Rspec (ссылка указывает на v3.7)
источник
Чтобы отправить оба
xhr: true
заголовка и заголовки, мне пришлось сделать, например:источник
headers =
бытьmy_headers =
?На ваш вопрос уже был дан ответ, но если вы хотите отправить что-то в другое действие, вы должны сделать это:
источник
Попробуйте что-нибудь вроде:
источник
format=json
как параметр запроса. Не то же самое, что и поле заголовка.