在RSPEC中传递承载令牌(没有将nil隐式转换为String)

问题描述 投票:1回答:2

require 'rails_helper'
RSpec.describe "User management", :type => :request do
    describe "Example::V2::Users" do
        describe "GET /api/v2/users/" do

          it 'returns status 200, authorized' do
              @token =  "Bearer 123"
              @url = "https://api.example-v2.com/v2/users/me"
              @headers = { "AUTHORIZATION" => @token}
              get @url, as: :json, headers: {:Authorization => @token}
              expect(response.status).to eq 200
          end
        end
    end
end

我正在尝试通过@token,但出现此错误

 Failure/Error: get @url, as: :json, headers: {:Authorization => @token}

     TypeError: no implicit conversion of nil into String

我可以在没有参数和标头的情况下发出获取请求,它可以工作,但是一旦添加参数或标头,我就会收到错误,我什至试图像这样编写它

1 - get @url, {}, { Authorization:  @token} 
ArgumentError: wrong number of arguments (given 2, expected 1)

2 - get @url, params: {}, headers: { Authorization:  @token}
TypeError: no implicit conversion of nil into String

一些聪明的人请指向正确的方向=)。

宝石:

gem 'rspec-rails', '~> 3.8'
gem 'rails', '~> 6.0.2.2'
ruby-on-rails ruby testing rspec rspec-rails
2个回答
0
投票

请检查它是否对我有用。

require 'rails_helper'
RSpec.describe "User management", :type => :request do
  describe "PeopleGoal::V2::Users" do
    describe "GET /api/v2/users/" do
      it 'returns status 200, authorized' do
        request.headers["AUTHORIZATION"] = "Basic #{user.id}"
        @url = "https://api.peoplegoal-v2.com/v2/users/me"
        get @url, format: :json
        expect(response.status).to eq 200
      end
    end
  end
end

0
投票
get @url, as: :json, headers: { Authorization: @token }

type: reuqst,这在我的环境中有效。我建议您可以在GET请求之前使用byebug并检查@token和@url。 如果一切看起来都很好。检查get是否可以请求根URL?检查rails_helper是否需要任何可疑文件?

© www.soinside.com 2019 - 2024. All rights reserved.