What problem does it solve? Writing consistent test doubles in TypeScript tests is error-prone: developers mix up vi.fn, vi.mock, and vi.spyOn usage, forget to verify mock interactions, and duplicate test data setup across test files. ## Core Features & Use Cases - Five Test Double Patterns: Covers mocks (vi.fn), stubs (mockResolvedValue/mockReturnValue), spies (vi.spyOn), module mocks (vi.mock), and error simulation (mockRejectedValue) with concrete code examples. - Verification Patterns: Provides assertion recipes for call arguments, call counts, call order, and negative verification using Vitest matchers. - Mother Pattern & Port Test Doubles: Defines factory functions for reusable test data and complete mock objects implementing domain interfaces like ISecretProvider and ILogger. - Use Case: When writing a unit test for a service that depends on a secret provider interface, generate a mock with vi.fn(), stub its resolved values, and verify it was called with the correct SSM path. ## Quick Start Write a Vitest unit test for my TypeScript service class using vi.fn() mocks for its port interfaces and verify the mock interactions.