【发布时间】:2016-02-18 19:38:13
【问题描述】:
我正在尝试在我的规范中使用 ActionDispatch request 辅助方法设置重要的标题:
RSpec.describe API::V1::FoosController, type: :request do
describe 'GET #index' do
context 'common case' do
request.env.merge!({'HTTP_FOO': 'FOO'})
get api_foos_path, {}, {Accept: Mime::JSON}
end
end
end
但是当涉及到控制器时,此标头(以及通常使用request 设置的任何标头)会消失:
class API::V1::FoosController < ApplicationController
respond_to :json, :xml
def index
request.env.has_key? 'HTTP_FOO' # false
respond_with serialize_models(Foo.all)
end
# ...
end
为什么会发生,我该如何正确设置?
使用request.header 或@request.header 设置标题也是如此。
P.S.:我知道我可以将标题设置为 Rack::Test::Methods 助手的第三个参数,但我不想违反 DRY - 我希望仅在此处定义 Mime 格式。
【问题讨论】:
标签: ruby-on-rails ruby rspec rspec-rails