mirror of
https://github.com/oven-sh/bun
synced 2026-02-09 10:28:47 +00:00
## Summary - Add `vi` export to `bun:test` TypeScript definitions for **partial** Vitest compatibility - Provides Vitest-style mocking API aliases for existing Jest functions ## Changes Added `vi` object export in `packages/bun-types/test.d.ts` with TypeScript interface for the methods Bun actually supports. **Note**: This is a **limited subset** of Vitest's full `vi` API. Bun currently implements only these 5 methods: ✅ **Implemented in Bun:** - `vi.fn()` - Create mock functions (alias for `jest.fn`) - `vi.spyOn()` - Create spies (alias for `spyOn`) - `vi.module()` - Mock modules (alias for `mock.module`) - `vi.restoreAllMocks()` - Restore all mocks (alias for `jest.restoreAllMocks`) - `vi.clearAllMocks()` - Clear mock state (alias for `jest.clearAllMocks`) ❌ **NOT implemented** (full Vitest supports ~30+ methods): - Timer mocking (`vi.useFakeTimers`, `vi.advanceTimersByTime`, etc.) - Environment mocking (`vi.stubEnv`, `vi.stubGlobal`, etc.) - Advanced module mocking (`vi.doMock`, `vi.importActual`, etc.) - Utility methods (`vi.waitFor`, `vi.hoisted`, etc.) ## Test plan - [x] Verified `vi` can be imported: `import { vi } from "bun:test"` - [x] Tested all 5 implemented `vi` methods work correctly - [x] Confirmed TypeScript types work with generics and proper type inference - [x] Validated compatibility with basic Vitest usage patterns ## Migration Benefits This enables easier migration for **simple** Vitest tests that only use basic mocking: ```typescript // Basic Vitest tests work in Bun now import { vi } from 'bun:test' // Previously would fail const mockFn = vi.fn() // ✅ Works const spy = vi.spyOn(obj, 'method') // ✅ Works vi.clearAllMocks() // ✅ Works // Advanced Vitest features still need porting to Jest-style APIs // vi.useFakeTimers() // ❌ Not supported yet // vi.stubEnv() // ❌ Not supported yet ``` This is a first step toward Vitest compatibility - more advanced features would need additional implementation in Bun core. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-authored-by: Claude Bot <claude-bot@bun.sh> Co-authored-by: Claude <noreply@anthropic.com>