【发布时间】:2018-06-18 22:55:32
【问题描述】:
控制器代码
before_action :verify_request
def verify_request
unless request.headers['Authorization'].present? && request.headers['Authorization'] == APIKEY["authorization_key"]
render json: { message: "UnAuthorize Request" }, status: 401
end
end
Rspec 代码:
describe "GET #index" do
it "returns 400 (empty query parameter)" do
request.env["HTTP_AUTHORIZATION"] = "testing123"
get :index
expect(response).to have_http_status(400)
end
end
我面临的问题是,在 rspec 测试时,控制器中无法访问环境变量并且测试失败。我该如何解决?
注意:我在 config/authorization.yml 中为所有环境定义了authorization_key,它在开发模式下工作但不在测试中。
我得到的错误是:
Failure/Error: unless request.headers['Authorization'].present? && request.headers['Authorization'] == APIKEY["authorization_key"]
NameError:
uninitialized constant V1::LocationController::APIKEY
【问题讨论】:
-
您介意分享错误的堆栈跟踪吗?
-
@JagdeepSingh 我更新问题
-
@HaseebAhmad 您在应用程序的哪个位置定义
APIKEY?请出示。 -
@maxpleaner in config/initializers/app_config.rb
-
@JagdeepSingh 有什么解决办法吗?
标签: ruby-on-rails ruby rspec rspec-rails rspec3