【问题标题】:NameError: uninitialized constant in controller while rspec controller testingNameError: rspec 控制器测试时控制器中的未初始化常量
【发布时间】: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


【解决方案1】:

您是否将require 'rails_helper' 包含在您的CONTROLLER-NAME_controller_spec.rb

【讨论】:

  • 需要'rails_helper'
猜你喜欢
  • 2015-10-25
  • 1970-01-01
  • 1970-01-01
  • 2014-12-04
  • 2018-03-27
  • 2013-11-18
  • 1970-01-01
  • 1970-01-01
  • 2013-11-10
相关资源
最近更新 更多