W specyfikacji kontrolera mogę ustawić nagłówek http accept w następujący sposób:
request.accept = "application/json"
ale w specyfikacji żądania obiekt „request” jest zerowy. Więc jak mogę to zrobić tutaj?
Powodem, dla którego chcę ustawić nagłówek http accept na json, jest to, że mogę to zrobić:
get '/my/path'
zamiast tego
get '/my/path.json'
ruby-on-rails
json
testing
rspec
Siergiej
źródło
źródło
get '/my/path', nil, {'HTTP_ACCEPT' => "application/json"}
:authorization
.get my_resource_path, params: {}, headers: { 'HTTP_ACCEPT' => "application/json" }
`Użyłem tego w Test :: Unit:
źródło
ActionController::TestCase
Cookie
w skrócie nagłówków (ponieważ tak wysyła moja przeglądarka), ale to nie zadziałało. Potem zrobiłemrequest.keys
i zobaczyłem klucz o nazwieHTTP_COOKIE
. Używanie tego zadziałało. Naprawdę powinni lepiej to udokumentować.Dodam to tutaj, ponieważ utknąłem, próbując to zrobić w Railsach 5.1.rc1
Podpis metody get jest teraz nieco inny.
Musisz określić opcje po ścieżce jako argumenty słów kluczowych, tj
get /some/path, headers: {'ACCEPT' => 'application/json'}
FYI, pełny zestaw argumentów słów kluczowych to:
params: {}, headers: {}, env: {}, xhr: false, as: :symbol
źródło
To działa dla specyfikacji kontrolera, a nie specyfikacji żądań:
źródło
request.headers
lubrequest.env
Muszę oddzielnie ustawić nagłówki
Próba wysłania go przez get / delete / .... jest kompletnym śmieciem w rails4 i powoduje ból w mojej głowie, ponieważ nigdy nie jest wysyłany jako nagłówek, ale jako parametr.
źródło
Używanie rspec z
Rack::Test::Methods
Zmienna nagłówka przejdzie jako
X-Your-Header-Var
źródło
Test::Unit
, a nie dla RSpec.ndefined method 'header'
dla mnie błąd.Z RSpec 3 możesz użyć następującej składni
Jak opisano w oficjalnej dokumentacji Rspec (odsyłacz prowadzi do wersji 3.7)
źródło
Aby wysłać oba
xhr: true
i nagłówki, musiałem zrobić np:źródło
headers =
byćmy_headers =
?Twoje pytanie zostało już udzielone, ale jeśli chcesz POST coś do innej akcji, musisz to zrobić:
źródło
Spróbuj czegoś takiego:
źródło
format=json
jako parametr zapytania. To nie to samo, co pole nagłówka.