feat: add aibtest package for testing utilities #74
+76
−63
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
This PR creates a proper testing package to address the tech debt identified in #73. The package consolidates scattered test helpers and provides well-structured components that reduce boilerplate and improve test readability.
New Components
MockUpstreamServer
Simulates LLM provider API responses using txtar fixtures. Features:
MockMCPServer
Provides a mock MCP server with integrated call tracking. This addresses the
callAccumulatorissue mentioned in #73:GetToolCalls(toolName)returns all recorded invocationsTotalCallCount()returns total invocations across all toolsNewMCPManager()creates an initialized ServerProxyManager ready to useMockRecorder
Implements
aibridge.Recorderfor testing with convenient accessors:Interceptions(),TokenUsages(),ToolUsages(),PromptUsages()TotalInputTokens(),TotalOutputTokens()VerifyAllInterceptionsEnded(t)for validationTestBridge
The main orchestrator that combines everything:
DoAnthropicRequest(t, reqBody)andDoOpenAIRequest(t, reqBody)methodsExample Usage
Before (from bridge_integration_test.go):
After (with aibtest):
Issues Addressed from #73
callAccumulatoris now integrated into MockMCPServersetupMCPServerProxiesForTestreturn values are consolidatedproxiesreturn value complexity is eliminatedTesting
All existing tests continue to pass:
Resolves #73