Test, observe, and operate KV
Test the missing and stale paths
Cover null, expired, malformed, and stale values instead of testing only a fresh successful read.
8 minute lesson
KV integration tests should use a real local binding in the Workers runtime. Seed each test independently and clean up by namespace or key prefix.
Test a missing key, an expired key, invalid serialized data, and a stale-value decision in ordinary application logic. You cannot force global propagation in a unit test, but you can verify the product remains correct when given an older value.
Write a table of expected behavior for fresh, stale, missing, and malformed configuration.
Write the fallback before testing the happy path:
const value = await env.FLAGS.get('checkout_enabled')
const checkoutEnabled = value === 'true'
Test true, false, a missing key, and a recently changed value from two locations. Your code should not turn a missing value into accidental access. The multi-location test makes eventual consistency visible instead of leaving it as an abstract warning.
Lesson completed