Module: HttpFake::RSpec
- Defined in:
- lib/httpfake/rspec.rb
Overview
RSpec integration.
Two equivalent usage patterns:
Pattern A — inline (per describe block):
RSpec.describe MyService do
include HttpFake::RSpec
fake_server(:payments) do
post "/charges" do
respond 201, json: { id: "ch_abc" }
end
end
it "creates a charge" do
MyService.charge(100)
expect(fake_server(:payments)).to have_received_request(:post, "/charges").once
end
end
Pattern B — suite-wide definition (most common):
FakeStripe = HttpFake.define(:stripe) do
base_url "https://api.stripe.com"
post "/v1/charges" do
respond 200, json: { id: "ch_123" }
end
end
RSpec.configure { |c| c.include FakeStripe.rspec_helpers }
it "charges the card" do
StripeService.charge(500)
expect(fake_server(:stripe)).to have_received_request(:post, "/v1/charges").once
end
Defined Under Namespace
Modules: ClassMethods
Class Method Summary collapse
Instance Method Summary collapse
-
#fake_server(name) ⇒ Object
Instance-level accessor — returns the live Server for this example.
-
#with_scenario(scenario_name, server_name = nil) ⇒ Object
Run a block with a named scenario active.
Class Method Details
.included(base) ⇒ Object
47 48 49 |
# File 'lib/httpfake/rspec.rb', line 47 def self.included(base) base.extend(ClassMethods) end |
Instance Method Details
#fake_server(name) ⇒ Object
Instance-level accessor — returns the live Server for this example.
84 85 86 |
# File 'lib/httpfake/rspec.rb', line 84 def fake_server(name) @_httpfake_servers[name] end |
#with_scenario(scenario_name, server_name = nil) ⇒ Object
Run a block with a named scenario active. server_name defaults to the only server if exactly one is registered.
90 91 92 93 94 95 96 97 98 99 100 101 102 103 |
# File 'lib/httpfake/rspec.rb', line 90 def with_scenario(scenario_name, server_name = nil, &) name = server_name || begin servers = @_httpfake_servers || {} raise ArgumentError, "server_name required when multiple fake servers are active" if servers.size > 1 raise ArgumentError, "No fake servers are active" if servers.empty? servers.keys.first end server = @_httpfake_servers[name] raise ArgumentError, "No fake server named #{name.inspect}" unless server server.with_scenario(scenario_name, &) end |