https://github.com/freerange/mocha/commit/1b1aa0d0e25f4527a0455562e964c19d23b987df

From 1b1aa0d0e25f4527a0455562e964c19d23b987df Mon Sep 17 00:00:00 2001
From: Earlopain <14981592+Earlopain@users.noreply.github.com>
Date: Fri, 9 May 2025 12:52:14 +0200
Subject: [PATCH] Fix compatibility with ruby 3.5

In 3.5, most of the `cgi` gem is removed. Only methods relating to escaping/unescaping are retained.

That means, on 3.5 you get this error:
> NoMethodError: undefined method 'parse' for class CGI

This replaces the cgi usage with https://docs.ruby-lang.org/en/master/URI.html#method-c-decode_www_form, that also returns this information.

It's in array form, so it first needs to be converted to an hash.

This method is available on all versions going back to at least Ruby 2.0 so compatibility should be ok with this.

https://bugs.ruby-lang.org/issues/21258
--- a/lib/mocha/parameter_matchers/equivalent_uri.rb
+++ b/lib/mocha/parameter_matchers/equivalent_uri.rb
@@ -2,7 +2,6 @@
 
 require 'mocha/parameter_matchers/base'
 require 'uri'
-require 'cgi'
 
 module Mocha
   module ParameterMatchers
@@ -55,7 +54,10 @@ def mocha_inspect
 
       # @private
       def explode(uri)
-        query_hash = CGI.parse(uri.query || '')
+        query_hash = Hash.new { |hash, key| hash[key] = [] }
+        URI.decode_www_form(uri.query || '').each do |key, value|
+          query_hash[key] << value
+        end
         URI::Generic::COMPONENT.inject({}) { |h, k| h.merge(k => uri.__send__(k)) }.merge(query: query_hash)
       end
     end
