{"record":{"id":"9f5d34c0257033e4","repo":"alexreisner/geocoder","slug":"unknown-stub-request-query-text","errorCode":null,"errorMessage":"unknown stub request #{query_text}","messagePattern":"unknown stub request #(.+?)","errorType":"exception","errorClass":"ArgumentError","httpStatus":null,"severity":"error","filePath":"lib/geocoder/lookups/test.rb","lineNumber":24,"sourceCode":"    class Test < Base\n\n      def name\n        \"Test\"\n      end\n\n      def self.add_stub(query_text, results)\n        stubs[query_text] = results\n      end\n\n      def self.set_default_stub(results)\n        @default_stub = results\n      end\n\n      def self.read_stub(query_text)\n        @default_stub ||= nil\n        stubs.fetch(query_text) {\n          return @default_stub unless @default_stub.nil?\n          raise ArgumentError, \"unknown stub request #{query_text}\"\n        }\n      end\n\n      def self.stubs\n        @stubs ||= {}\n      end\n\n      def self.delete_stub(query_text)\n        stubs.delete(query_text)\n      end\n\n      def self.reset\n        @stubs = {}\n        @default_stub = nil\n      end\n\n      private\n","sourceCodeStart":6,"sourceCodeEnd":42,"githubUrl":"https://github.com/alexreisner/geocoder/blob/c10bd701215110ebe65da1c8b8b410b124208fd2/lib/geocoder/lookups/test.rb#L6-L42","documentation":"Geocoder's Test lookup raises ArgumentError when results are requested for a query that has no stub registered and no default stub is set. It exists purely for test suites, so this means your test data does not cover that query.","triggerScenarios":"Calling Geocoder.search('some address') with lookup Test while only other query strings were stubbed via Geocoder::Lookup::Test.add_stub, and no set_default_stub was called.","commonSituations":"Test fixtures drifting from the addresses used in code under test; refactoring addresses/URL fragments without updating stubs; locale or normalization differences changing the query text.","solutions":["Register the missing stub: Geocoder::Lookup::Test.add_stub('the query text', [result])","Call Geocoder::Lookup::Test.set_default_stub([...]) for a catch-all","Align the query string in the test with the one actually generated (URL-encoded text)","Reset stubs between tests to avoid stale expectations"],"exampleFix":"// before\nGeocoder.search('1600 amphitheatre parkway') # no stub\n// after\nGeocoder::Lookup::Test.add_stub('1600 amphitheatre parkway', [{'latitude' => 37.42, 'longitude' => -122.08}])\nGeocoder.search('1600 amphitheatre parkway')","handlingStrategy":"validation","validationCode":"raise 'no stub' unless Geocoder::Lookup::Test.stubs.key?(query_text) || Geocoder::Lookup::Test.instance_variable_get(:@default_stub)","typeGuard":null,"tryCatchPattern":"begin\n  results = Geocoder.search(address)\nrescue ArgumentError => e\n  raise \"missing stub: #{e.message}\"\nend","preventionTips":["Add a stub for every address the code under test queries","Use set_default_stub as a safety net in shared test setup","Reset stubs between examples to keep expectations fresh"],"tags":["ruby","testing","stubs"],"backgroundTag":"resource-not-found","analyzedSha":"c10bd701215110ebe65da1c8b8b410b124208fd2","analyzedAt":"2026-09-15T23:43:32.125Z","contentChangedAt":"2026-09-15T23:43:32.125Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}