๐๏ธ๐๏ธ๐ง Mock D1 Database implementation for testing Cloudflare Workers
npm install @variablesoftware/mock-d1






Mock Cloudflare D1 Database for unit and integration testing
๐๏ธ๐๏ธ๐ง @variablesoftware/mock-d1 provides an in-memory simulation of Cloudflare's D1 SQLite-compatible database. It enables fast, isolated, and predictable testing of SQL-backed applications without relying on external services.
---
``bash`
pnpm add --dev @variablesoftware/mock-d1
> This package assumes a test environment with Vitest and support for ESM.
---
`ts
import { mockD1Database } from "@variablesoftware/mock-d1";
const db = mockD1Database({
sessions: [{ sub: "user-123", jti: "token-abc", created: Date.now() }],
});
const stmt = db.prepare("SELECT * FROM sessions WHERE sub = ?");
stmt.bind("user-123");
const result = await stmt.all();
console.log(result.results); // [{ sub: 'user-123', ... }]
`
---
- โ Match Cloudflare's behavior for testing real query flows
- ๐ Explicit mock factories preferred over static snapshots
- ๐ฆ Eventually compatible with service bindings
- Fully in-memory, no persistent writes
- SQL-style .prepare().bind().all() and .run() flow@variablesoftware/logface
- Supports mock row injection
- Isolated per test run
- Compatible with Vitest and Hono-based Cloudflare Workers
- Logs via SELECT
- Supports simple , INSERT, UPDATE, and DELETE statements.dump()
- Optional method for snapshot inspectionD1Result
- Returns results shaped like real Cloudflare
- Does not coerce types or values โ faithfully returns your stored inputs
- Strives for parity with Cloudflare D1 behavior while keeping mocks debuggable
---
Tested using vitest run, with coverage for:
- The "butter churn" suite stress-tests mockD1Database() with randomized insert/select/delete operations to simulate real query volumeD1Result
- Basic SELECT queries
- Parameter binding
- Return shape matching Cloudflare's
Run tests:
`bash`
pnpm test
---
This package is under active development and not yet stable.
Once stable, it will be published as:
`json``
"@variablesoftware/mock-d1": "^0.5.0"
---
MIT ยฉ Rob Friedman / Variable Software
---
> Built with โค๏ธ by @variablesoftware
> Thank you for downloading and using this project. Pull requests are warmly welcomed!
---
- Naming, logging, error messages, and tests avoid cultural or ableist bias
- Avoids assumptions about input/output formats or encodings
- Faithfully reflects user data โ no coercion or silent transformations
- Designed for clarity, predictability, and parity with underlying platforms (e.g., Cloudflare APIs)
- Works well in diverse, multilingual, and inclusive developer environments
---