Testing Method Proxy Implementation in Faraday HTTP Client
This test suite validates core functionality of the Faraday HTTP client library, focusing on version verification and method proxying capabilities. It ensures proper connection handling and method delegation through comprehensive unit tests.
Test Coverage Overview
Implementation Analysis
Technical Details
Best Practices Demonstrated
lostisland/faraday
spec/faraday_spec.rb
# frozen_string_literal: true
RSpec.describe Faraday do
it 'has a version number' do
expect(Faraday::VERSION).not_to be nil
end
context 'proxies to default_connection' do
let(:mock_connection) { double('Connection') }
before do
Faraday.default_connection = mock_connection
end
it 'proxies methods that exist on the default_connection' do
expect(mock_connection).to receive(:this_should_be_proxied)
Faraday.this_should_be_proxied
end
it 'uses method_missing on Faraday if there is no proxyable method' do
expected_message =
if RUBY_VERSION >= '3.4'
"undefined method 'this_method_does_not_exist' for module Faraday"
elsif RUBY_VERSION >= '3.3'
"undefined method `this_method_does_not_exist' for module Faraday"
else
"undefined method `this_method_does_not_exist' for Faraday:Module"
end
expect { Faraday.this_method_does_not_exist }.to raise_error(NoMethodError, expected_message)
end
it 'proxied methods can be accessed' do
allow(mock_connection).to receive(:this_should_be_proxied)
expect(Faraday.method(:this_should_be_proxied)).to be_a(Method)
end
after do
Faraday.default_connection = nil
end
end
end