diff --git a/Gemfile.checksum b/Gemfile.checksum
index cae57fed0d9527c7cd84b4ed33a91859d456500d..3a4dbd9cf68c3fb9b478250cb4c34520d45b3e59 100644
--- a/Gemfile.checksum
+++ b/Gemfile.checksum
@@ -527,7 +527,7 @@
 {"name":"rspec-benchmark","version":"0.6.0","platform":"ruby","checksum":"1014adb57ec2599a2455c63884229f367a2fff6a63a77fd68ce5d804c83dd6cf"},
 {"name":"rspec-core","version":"3.12.0","platform":"ruby","checksum":"c466f4137966526e177d2156ca45c249eeecc7ed519b23ae2fb80c4675406bc5"},
 {"name":"rspec-expectations","version":"3.12.2","platform":"ruby","checksum":"8652db70b25ae3378b7274477a906b6ad1833a7b7cfbb001a03f49dd1c1d6a0d"},
-{"name":"rspec-mocks","version":"3.12.3","platform":"ruby","checksum":"cc0a1176707e641a2c66c71fe769486fec57d7df8ec7e34320f8957a1363026b"},
+{"name":"rspec-mocks","version":"3.12.6","platform":"ruby","checksum":"de51a4148ba2ce6f1c1646a2a03e9df2f52da9a42b164f2e7467b2cbe37e07bf"},
 {"name":"rspec-parameterized","version":"1.0.0","platform":"ruby","checksum":"9c07b043c72afbd23dd9a1dd48c06f46bc2fb1a6d875c6703e254932ba28b386"},
 {"name":"rspec-parameterized-core","version":"1.0.0","platform":"ruby","checksum":"287b494985e79821160af63aba4f91db8dbfa9a21cb200db34ba38f40e16ccc1"},
 {"name":"rspec-parameterized-table_syntax","version":"1.0.0","platform":"ruby","checksum":"d7df951eff9c5dd367ca7d5f9ae4853bb7ab7941f9d5b35bba361d112704988c"},
diff --git a/Gemfile.lock b/Gemfile.lock
index cec5258561c71bbfcf4ea25241efb4a23c3adf6f..2039418605b58a4826f8c19ca0b2136d389e2269 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -1353,7 +1353,7 @@ GEM
     rspec-expectations (3.12.2)
       diff-lcs (>= 1.2.0, < 2.0)
       rspec-support (~> 3.12.0)
-    rspec-mocks (3.12.3)
+    rspec-mocks (3.12.6)
       diff-lcs (>= 1.2.0, < 2.0)
       rspec-support (~> 3.12.0)
     rspec-parameterized (1.0.0)
diff --git a/lib/backup/gitaly_backup.rb b/lib/backup/gitaly_backup.rb
index 53c998efd716dc8ba302a1161c9ec6e918cf0d0c..bb9f45121e9b7efb3c062a5e329a498d075ded2b 100644
--- a/lib/backup/gitaly_backup.rb
+++ b/lib/backup/gitaly_backup.rb
@@ -107,7 +107,11 @@ def build_env
         'SSL_CERT_FILE' => Gitlab::X509::Certificate.default_cert_file,
         'SSL_CERT_DIR' => Gitlab::X509::Certificate.default_cert_dir,
         'GITALY_SERVERS' => gitaly_servers_encoded
-      }.merge(ENV)
+      }.merge(current_env)
+    end
+
+    def current_env
+      ENV
     end
 
     def started?
diff --git a/spec/lib/backup/database_spec.rb b/spec/lib/backup/database_spec.rb
index dd8a4a14531cdfaaa2e20fe9d0cfc94601346db4..e0ca090d96a302c44c55bd103bd7f6f208a6a4ee 100644
--- a/spec/lib/backup/database_spec.rb
+++ b/spec/lib/backup/database_spec.rb
@@ -272,14 +272,13 @@
     end
 
     context 'with PostgreSQL settings defined in the environment' do
-      let(:cmd) { %W[#{Gem.ruby} -e] + ["$stderr.puts ENV.to_h.select { |k, _| k.start_with?('PG') }"] }
       let(:config) { YAML.load_file(File.join(Rails.root, 'config', 'database.yml'))['test'] }
 
       before do
-        stub_const 'ENV', ENV.to_h.merge({
+        stub_env(ENV.to_h.merge({
           'GITLAB_BACKUP_PGHOST' => 'test.example.com',
           'PGPASSWORD' => 'donotchange'
-        })
+        }))
       end
 
       it 'overrides default config values' do
@@ -289,12 +288,13 @@
           expect(Rake::Task['gitlab:db:drop_tables:main']).to receive(:invoke)
         end
 
+        expect(ENV).to receive(:[]=).with('PGHOST', 'test.example.com')
+        expect(ENV).not_to receive(:[]=).with('PGPASSWORD', anything)
+
         subject.restore(backup_dir)
 
-        expect(output).to include(%("PGHOST"=>"test.example.com"))
-        expect(output).to include(%("PGPASSWORD"=>"donotchange"))
-        expect(output).to include(%("PGPORT"=>"#{config['port']}")) if config['port']
-        expect(output).to include(%("PGUSER"=>"#{config['username']}")) if config['username']
+        expect(ENV['PGPORT']).to eq(config['port']) if config['port']
+        expect(ENV['PGUSER']).to eq(config['username']) if config['username']
       end
     end
 
diff --git a/spec/lib/backup/gitaly_backup_spec.rb b/spec/lib/backup/gitaly_backup_spec.rb
index 172fc28dd3e5f700412b9a92364d994572cc490d..40e835e9dc8e276178ff6479fa1382b8ca73ea2a 100644
--- a/spec/lib/backup/gitaly_backup_spec.rb
+++ b/spec/lib/backup/gitaly_backup_spec.rb
@@ -132,11 +132,8 @@
         )
       end
 
-      before do
-        stub_const('ENV', ssl_env)
-      end
-
       it 'passes through SSL envs' do
+        expect(subject).to receive(:current_env).and_return(ssl_env)
         expect(Open3).to receive(:popen2).with(expected_env, anything, 'create', '-path', anything, '-layout', 'pointer', '-id', backup_id).and_call_original
 
         subject.start(:create, destination, backup_id: backup_id)