Я новый пользователь rspe c и webmock!
Я устанавливаю значения тайм-аута чтения и открытия для экземпляра Net :: HTTP в методе, который я тестирую модулем:
https = Net::HTTP.new(uri.host, uri.port)
https.open_timeout = timeout #set the timeout from method parameters
https.read_timeout = timeout
# make request etc.
Я использую webmock для имитации запроса к внешнему API.
Как мне проверить, что установлены свойства open_timeout и read_timeout на экземпляре Net :: HTTP?
Я пробовал следующее в своем модульном тесте:
it "accepts custom timeout period" do
yamlContent = "image: ruby:latest"
expectedTimeout = 5
allow(YAML).to receive(:load_file).with(@fileName).and_return(yamlContent)
mockHttps = instance_double(Net::HTTP)
stub_request(:post, @endpointUrl).to_timeout
expect do
api = Gitlab::Lint::Client::Api.new
response = api.lint(@endpointUrl, @fileName, @defaultHeaders, expectedTimeout)
end.to raise_error(Net::OpenTimeout)
expect(mockHttps.read_timeout).to eq(expectedTimeout)
expect(mockHttps.open_timeout).to eq(expectedTimeout)
end
Это использует webmock для имитации тайм-аута, и я вижу, что ошибка тайм-аута действительно растут. Однако I read_timeout является нераспознанным свойством для mockHttps double:
Failure/Error: expect(mockHttps.read_timeout).to eq(expectedTimeout)
#<InstanceDouble(Net::HTTP) (anonymous)> received unexpected message :read_timeout with (no args)
# ./spec/gitlab/lint/client/api_spec.rb:83:in `block (4 levels) in <top (required)>'