RSpec-如何在所有请求测试上全局设置https协议

RSpec-如何在所有请求测试上全局设置https协议,rspec,Rspec,Rspec版本-3.8 测试类型-请求规范 如何在所有请求规范上全局设置https协议?看起来您可能正在使用Rails,在这种情况下,您可以执行以下操作之一: 要为所有Rspec示例设置“https”,请创建一个文件,如spec/support/url_options.rb,其中包含以下内容: 要仅针对请求规范,可以使用钩子,例如: 对于站点范围的配置,您可以将以下内容添加到config/environments/test.rb中: 这对于请求规范应该可以很好地工作,但是特性规范可能会有额外的复

Rspec版本-3.8 测试类型-请求规范


如何在所有请求规范上全局设置https协议?

看起来您可能正在使用Rails,在这种情况下,您可以执行以下操作之一:

  • 要为所有Rspec示例设置“https”,请创建一个文件,如spec/support/url_options.rb,其中包含以下内容:
  • 要仅针对请求规范,可以使用钩子,例如:
  • 对于站点范围的配置,您可以将以下内容添加到config/environments/test.rb中:
  • 这对于请求规范应该可以很好地工作,但是特性规范可能会有额外的复杂性。在这种情况下,请参见


    如果您不使用Rails,您仍然可以遵循上面的大致模式,但可以替换框架的等效方法或配置设置。如果所有其他方法都失败,您可以重写Rspec方法get()、post()等。在被重写的方法中,只需使用
    {protocol:'https'}
    {'https'=>'on'}
    合并到参数中即可调用
    super()

    另外,请注意,“上的
    'HTTPS'=>”可能已经被弃用,取而代之的是
    协议:“HTTPS'


    具有其他可能性的类似员额:


    使用共享模块?我正在考虑在配置级别为所有请求规范设置https。我试过了,但失败了
    RSpec.describe "Home", type: :request do
    
        describe "GET /index" do
          it "is a success" do
            get root_path, {}, {'HTTPS' => 'on'}
            expect(response).to have_http_status(200)
          end
        end
    end
    
    RSpec.configure do |config|
      Rails.application.routes.default_url_options[:protocol] = 'https'
    end
    
    RSpec.configure do |config|
      config.before(:all, type: :request) do
        Rails.application.routes.default_url_options[:protocol] = 'https'
      end
    end
    
    Rails.application.configure do
      default_url_options[:protocol] = 'https'
    end