The test used a 5ms TTL with a 10ms wall-clock sleep to simulate cache expiry. On loaded CI runners (Azure eastus), the repull HTTP round-trip plus disk I/O for Store easily exceeded 5ms, causing the freshly written cache entry to also appear expired when Load was called immediately after, producing a spurious 'cache expired' error. HubCache already exposes a nowFn field for deterministic time injection. Replace the sleep-based approach with a nowFn that advances the clock 2 hours, making the initial entry appear expired to Apply while keeping the freshly re-stored entry (retrieved_at ≈ now+2h, TTL=1h) valid for the final assertion.
20 KiB
20 KiB