Module: HttpDecoy::Minitest::ClassMethods
- Defined in:
- lib/http_decoy/minitest.rb
Instance Method Summary collapse
- #_http_decoy_install_hooks ⇒ Object
-
#_http_decoy_register(name, route_map) ⇒ Object
Internal: register a pre-built RouteMap and install setup/teardown (once per class) that start/stop every registered server.
- #_http_decoy_route_maps ⇒ Object
-
#fake_server(name) ⇒ Object
Class-level macro.
Instance Method Details
#_http_decoy_install_hooks ⇒ Object
76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 |
# File 'lib/http_decoy/minitest.rb', line 76 def _http_decoy_install_hooks return if @_http_decoy_hooks_installed @_http_decoy_hooks_installed = true define_method(:setup) do super() @_http_decoy_servers = {} @_http_decoy_webmock_stubs = {} self.class._http_decoy_route_maps.each do |server_name, route_map| server = Server.new(route_map) server.start stub = WebMockIntegration.setup(server) @_http_decoy_servers[server_name] = server @_http_decoy_webmock_stubs[server_name] = stub end end define_method(:teardown) do (@_http_decoy_servers || {}).each_key do |server_name| server = @_http_decoy_servers[server_name] stub = @_http_decoy_webmock_stubs[server_name] WebMockIntegration.teardown(stub) server&.stop end super() end end |
#_http_decoy_register(name, route_map) ⇒ Object
Internal: register a pre-built RouteMap and install setup/teardown (once per class) that start/stop every registered server. Called by both the fake_server macro and Definition#minitest_helpers.
67 68 69 70 |
# File 'lib/http_decoy/minitest.rb', line 67 def _http_decoy_register(name, route_map) _http_decoy_route_maps[name] = route_map _http_decoy_install_hooks end |
#_http_decoy_route_maps ⇒ Object
72 73 74 |
# File 'lib/http_decoy/minitest.rb', line 72 def _http_decoy_route_maps @_http_decoy_route_maps ||= {} end |
#fake_server(name) ⇒ Object
Class-level macro. Evaluates the block into a RouteMap once at class-load time, then registers it for the shared setup/teardown hooks.
58 59 60 61 62 |
# File 'lib/http_decoy/minitest.rb', line 58 def fake_server(name, &) route_map = RouteMap.new route_map.instance_eval(&) _http_decoy_register(name, route_map) end |