解決

  def setup
    omniauth_strategy.options[:consumer_key] = Global..twitter.consumer_key
    omniauth_strategy.options[:consumer_secret] = Global..twitter.consumer_key_secret

    render json: { message: "Omniauth setup phase." }, status: :not_found
  end
RSpec.describe SessionController, type: :controller do
  subject { get :setup, params: { provider: :twitter } }

  let(:strategy_options) { Struct.new(:options).new({consumer_key: nil, consumer_secret: nil}) }
  let(:consumer_key) { "twitter-mock-consumer_key" }
  let(:consumer_secret) { "twitter-mock-consumer_key_secret" }

  before do
    allow(Global.twitter).to receive(:consumer_key).and_return(consumer_key)
    allow(Global.twitter).to receive(:consumer_key_secret).and_return(consumer_secret)

    allow(controller.request.env).to receive(:[]).and_call_original
    allow(controller.request.env).to receive(:[]).with("omniauth.strategy").and_return(strategy_options)
  end

  context "Success" do
    it "カスタムキーのセットアップを行う" do
      subject
      aggregate_failures do
        expect(strategy_options.options[:consumer_key]).to eq consumer_key
        expect(strategy_options.options[:consumer_secret]).to eq consumer_secret
        expect(response).to have_http_status(:not_found)
      end
    end
  end
end

注意点

paramsの設定

subject { get :setup, params: { provider: :twitter } }

【Rspec】ネストされているコントローラーのテストについて。「No route matches」と言わせない書き方 - 文系人間がエンジニアを目指すブログ

元の値を引用

allow(controller.request.env).to receive(:[]).and_call_original

[Rspec Make a mock against hash - Qiita](https://qiita.com/YumaInaura/items/e22552edc476167b9213#example-1)