Install & Compatibility
Where this runs
No compatibility data collected yet for this library.
Code
Verified usage
Verified import paths — ran on the pinned version, not inferred.
mockDatabase
✓ import { mockDatabase } from 'vitest-drizzle-mock'
✗ import { mockDatabase } from 'drizzle-orm'
Named export from the package. Not a drizzle-orm export.
MockController
✓ import { MockController } from 'vitest-drizzle-mock'
✗ import MockController from 'vitest-drizzle-mock'
TypeScript type export. Use named import for type.
drizzle.mock
✓ import { drizzle } from 'drizzle-orm/node-postgres'; const db = drizzle.mock({ schema })
✗ import { mockDatabase } from 'vitest-drizzle-mock'; const db = mockDatabase(schema)
drizzle.mock() comes from drizzle-orm, not from vitest-drizzle-mock.
Complete Vitest test setup demonstrating mocking select, insert, and update operations on drizzle-orm with vitest-drizzle-mock.
import { describe, it, expect, beforeEach } from 'vitest';
import { eq } from 'drizzle-orm';
import { drizzle } from 'drizzle-orm/node-postgres';
import { mockDatabase, MockController } from 'vitest-drizzle-mock';
import * as schema from './schema';
describe('user service', () => {
let db: ReturnType<typeof drizzle.mock<typeof schema>>;
let mock: MockController<typeof db>;
beforeEach(() => {
db = drizzle.mock({ schema });
mock = mockDatabase(db);
});
it('should find a user by id', async () => {
mock.onSelect(schema.users).respond([
{ id: 1, name: 'Alice', email: 'alice@test.com' },
]);
const result = await db
.select()
.from(schema.users)
.where(eq(schema.users.id, 1));
expect(result).toEqual([
{ id: 1, name: 'Alice', email: 'alice@test.com' },
]);
});
it('should create a user', async () => {
mock
.onInsert(schema.users)
.values({ name: 'x', email: 'x' })
.respond([{ id: 2, name: 'Bob', email: 'bob@test.com' }]);
const result = await db
.insert(schema.users)
.values({ name: 'Bob', email: 'bob@test.com' })
.returning();
expect(result).toEqual([
{ id: 2, name: 'Bob', email: 'bob@test.com' },
]);
});
it('should update a user', async () => {
mock
.onUpdate(schema.users)
.set({ name: 'x' })
.respond({ rowCount: 1 });
const result = await db
.update(schema.users)
.set({ name: 'Alice Updated' })
.where(eq(schema.users.id, 1));
expect(result).toEqual({ rowCount: 1 });
});
});
Errors
Common errors & fixes
TypeError: drizzle.mock is not a function
Using vitest-drizzle-mock without creating a drizzle mock instance first
fixInstall drizzle-orm, then create db = drizzle.mock({ schema }) Module 'vitest-drizzle-mock' has no exported member 'mockDatabase'
Incorrect import: trying to import from wrong package (e.g., drizzle-orm) or using default import
fixUse import { mockDatabase } from 'vitest-drizzle-mock' Argument of type 'MockController<...>' is not assignable to parameter of type 'MockController<...>'
Type mismatch due to incorrect generic parameter or schema
fixEnsure the mock type matches the drizzle instance type: MockController<typeof db>
Audit
Dependencies
drizzle-ormrequiredPeer dependency required for typing and compatibility with drizzle mock instances