class Riffer::Providers::Mock
Mock provider for mocking LLM responses in tests; no external gems required.
Attributes
Array of recorded method calls for assertions.
Public Class Methods
Source
# File lib/riffer/providers/mock.rb, line 39 def initialize(**options) @responses = (options[:responses] || []).map { |r| normalize_response(r) } @current_index = 0 @calls = [] @stubbed_responses = [] end
responses: pre-configures canned responses (same shape as stub_response), typically set via +provider_options responses: […]+.
Riffer::Providers::Mock.new(responses: [ {content: "", tool_calls: [{name: "tool_a", arguments: "{}"}]}, {content: "Final answer"} ])
Source
# File lib/riffer/providers/mock.rb, line 22 def self.semconv_provider_name "mock" end
The GenAI semconv well-known provider name.
Source
# File lib/riffer/providers/mock.rb, line 14 def self.skills_adapter(model = nil) return Riffer::Skills::XmlAdapter if model&.include?("claude") Riffer::Skills::MarkdownAdapter end
Returns the skill adapter for the mock model — XML when the model name contains claude (mirroring a real Claude provider), else Markdown.
Public Instance Methods
Source
# File lib/riffer/providers/mock.rb, line 64 def clear_stubs @stubbed_responses = [] end
Clears all stubbed responses.
Source
# File lib/riffer/providers/mock.rb, line 56 def stub_response(content, tool_calls: [], token_usage: nil, finish_reason: nil) @stubbed_responses << normalize_response(content: content, tool_calls: tool_calls, token_usage: token_usage, finish_reason: finish_reason) end
Stubs the next response; call repeatedly to queue several. finish_reason defaults to :tool_calls when tool calls are present, else :stop.
provider.stub_response("Hello") provider.stub_response("", tool_calls: [{name: "my_tool", arguments: '{"key":"value"}'}]) provider.stub_response("Final response", token_usage: Riffer::Providers::TokenUsage.new(input_tokens: 10, output_tokens: 5)) provider.stub_response("Truncated...", finish_reason: :length)