Simule OpenURI.open_uri do idioma com Minitest

Eu tenho um código que chamaOpenURI.open_uri e quero confirmar que o URI está sendo usado na chamada (para que um esboço não funcione para mim), mas também interceptar a chamada. Espero não ter que abstrair a chamada paraOpenURI.open_uri apenas para fins de teste. O que eu criei parece detalhado e excessivamente complicado.

under_test.rb

require 'open-uri'

class UnderTest
  def get_request(uri)
    open(uri).read
  end
end

test_under_test.rb

require 'minitest/autorun'
require './lib/under_test'

class TestUnderTest < Mintest::Test
  def test_get_request
    @under_test = UnderTest.new
    mock_json  = '{"json":[{"element":"value"}]}'
    uri = URI('https://www.example.com/api/v1.0?attr=value&format=json')
    tempfile = Tempfile.new('tempfile')
    tempfile.write(mock_json)

    mock_open_uri = Minitest::Mock.new
    mock_open_uri.expect(:call, tempfile, [uri])

    OpenURI.stub :open_uri, mock_open_uri do
      @under_test.get_request('https://www.example.com/api/v1.0?attr=value&format=json'
    end

    mock_open_uri.verify
  end
end

Estou usando ou interpretando mal a zombaria do Minitest?

Parte da dança é que também estou criando umTempfile para que meuread chamada bem-sucedida. Eu poderia acabar com isso, mas espero que exista uma maneira de sair da cadeia de chamadas mais perto do começo.

questionAnswers(1)

yourAnswerToTheQuestion