gpt4 book ai didi

ruby-on-rails - 通过RSpec发送自定义 header

转载 作者:行者123 更新时间:2023-12-03 12:06:35 25 4
gpt4 key购买 nike

给定我的API,使用者需要发送客户HTTP header ,如下所示:

# curl -H 'X-SomeHeader: 123' http://127.0.0.1:3000/api/api_call.json

然后,我可以在before_filter方法中读取此 header ,如下所示:
# app/controllers/api_controller.rb
class ApiController < ApplicationController
before_filter :log_request

private
def log_request
logger.debug "Header: #{request.env['HTTP_X_SOMEHEADER']}"
...
end
end

到目前为止很棒。现在,我想使用RSpec对此进行测试,因为行为有所变化:
# spec/controllers/api_controller_spec.rb
describe ApiController do
it "should process the header" do
@request.env['HTTP_X_SOMEHEADER'] = '123'
get :api_call
...
end
end

但是,在ApiController中收到的 request将无法找到 header 变量。

当尝试使用HTTP_ACCEPT_LANGUAGE header 的 same code时,它将起作用。自定义 header 是否在某处过滤?

PS:网络上的一些示例使用 request而不是 @request。虽然我不确定当前的Rails 3.2 / RSpec 2.14组合中哪一种是正确的-两种方法都不会触发正确的行为,但是两种方法都可以与 HTTP_ACCEPT_LANGUAGE一起使用。

最佳答案

好吧,对于人们来说可能为时已晚,但要排队:

it 'should get profile when authorized' do
user = FactoryGirl.create :user
request.headers[EMAIL_TOKEN] = user.email
request.headers[AUTH_TOKEN] = user.authentication_token
get :profile
response.should be success
end

只需使用适当的设置调用request.headers。

关于ruby-on-rails - 通过RSpec发送自定义 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18438271/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com