Answers:
您应该能够将HTTP标头指定为get()方法的第三个参数,如下所述:
http://api.rubyonrails.org/classes/ActionDispatch/Integration/RequestHelpers.html#method-i-get
和这里
http://api.rubyonrails.org/classes/ActionDispatch/Integration/Session.html#method-i-process
因此,您可以尝试执行以下操作:
get '/my/path', nil, {'HTTP_ACCEPT' => "application/json"}
:authorization
。
get my_resource_path, params: {}, headers: { 'HTTP_ACCEPT' => "application/json" }
`
我在Test :: Unit中使用了它:
@request.env['HTTP_ACCEPT'] = "*/*, application/youtube-client"
get :index
ActionController::TestCase
Cookie
标头哈希中命名的键(因为这是我的浏览器发送的键),但是它不起作用。然后我找到request.keys
了一个名为的钥匙HTTP_COOKIE
。使用有效。他们确实应该对此进行更好的记录。
这适用于控制器规格,而不是要求规格:
request.headers["My Header"] = "something"
request.headers
或request.env
我必须分别设置标题
request.headers["Accept"] = "application/json"
尝试通过get / delete / ....发送它是在rails4中完全的垃圾,并引起我的头疼,因为它从不作为标头而是作为参数发送。
{"Accept" => "application/json"}
将rspec与 Rack::Test::Methods
header 'X_YOUR_HEADER_VAR', 'val'
get '/path'
标头var将通过 X-Your-Header-Var
Test::Unit
,不适用于RSpec。
ndefined method 'header'
给我带来了错误。
使用RSpec 3,您可以使用以下语法
get my_resource_path, params: {}, headers: { 'HTTP_ACCEPT' => "application/json" }
如官方Rspec文档中所述(链接指向v3.7)
要发送xhr: true
和标头,我必须做例如:
my_headers = { "HTTP_ACCEPT": "application/json" }
get my_path, xhr: true, headers: my_headers
headers =
应该my_headers =
吗?
您的问题已得到解答,但是如果您要向其他操作发布内容,则必须执行以下操作:
post :save, {format: :json, application: {param1: "test", param2: "test"}}
get '/my/path', nil, {'HTTP_ACCEPT' => "application/json"}