vi.fn & Return Values in Vitest

From the Vitest cheat sheet · Mock Functions · verified Nov 2026

vi.fn & Return Values

Create mock functions and control what they return, resolve, or throw

typescript
const getUser = vi.fn()
getUser.mockReturnValue({ id: 1 })
getUser.mockReturnValueOnce({ id: 2 })        // next call only
getUser.mockResolvedValue({ id: 1 })          // returns a promise
getUser.mockRejectedValueOnce(new Error('offline'))
getUser.mockImplementation((id: number) => ({ id }))
getUser.mockThrow(new Error('boom'))          // 4.1+
🟢 vi.fn() with no implementation returns undefined
💡 Pass a signature generic: vi.fn<(id: number) => User>()
📌 Once values are used first, then the default return value
⚡ mockResolvedValue is shorthand for an async implementation
vi.fnmockReturnValuemockResolvedValue

Continue with Vitest

Save the full cheat sheet or work through every related task.

More Vitest tasks

Back to the full Vitest cheat sheet