@variablesoftware/mock-kv
v0.4.1
Published
ποΈπ·οΈβ¨ Mock KV Namespace for testing Cloudflare Workers
Downloads
85
Maintainers
Readme
@variablesoftware/mock-kv ποΈπ·οΈβ¨
Mock Cloudflare KV Namespace for unit and integration testing
ποΈπ·οΈβ¨ @variablesoftware/mock-kv provides an in-memory simulation of Cloudflare Workers KV. It is designed for testing key-value storage logic with expiration, metadata, and batch operations β without any external dependencies.
π§ Installation
yarn add --dev @variablesoftware/mock-kvThis package assumes a test environment with Vitest and support for ESM.
π Usage
import { mockKVNamespace } from '@variablesoftware/mock-kv';
const kv = mockKVNamespace();
await kv.put('token-abc', 'value', { expirationTtl: 60 });
const result = await kv.get('token-abc');
console.log(result); // 'value'π― Goals
- β Match Cloudflare KV behavior closely for testing
- π§ͺ Support test-safe mocking of put/get/delete/list flows
- π¦ No external storage dependencies; uses only in-memory JS objects
- π Logging via
@variablesoftware/logfaceis required for test and runtime logging, but does not rely on any external services
β¨ Features
Includes matching behavior for edge cases like:
Key expiration mid-test
list()with prefix collisions and limitsMetadata preservation across put/get calls
In-memory mock of Cloudflare
KVNamespaceSupports
put,get,delete,list, and metadata optionsTTL-aware: honors
expirationTtlandexpirationReturns values as
string,ArrayBuffer, ornulljust like real KVSimulates listing behavior including prefix + limit
Supports metadata in
put()andgetWithMetadata()Compatible with Vitest and any Cloudflare Worker test setup
Logs via
@variablesoftware/logfaceOptional
.dump()method for inspecting KV state during tests
π§ͺ Test Coverage
Tested using vitest run, with coverage for:
put()with TTL and metadataget()andgetWithMetadata()matching real behaviordelete()andlist()consistency- Full
.dump()snapshots for inspection and debugging
Run tests:
yarn testπ§ Status
This package is under active development and not yet stable.
Once stable, it will be published as:
"@variablesoftware/mock-kv": "^0.5.0"π License
MIT Β© Rob Friedman / Variable Software
Built with β€οΈ by @variablesoftware
Thank you for downloading and using this project. Pull requests are warmly welcomed!
π Inclusive & Accessible Design
- 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
