def METHOD_NAME(self) -> None:
    cache = self.with_cache("medium_cache", ms=3000)
    expected_result = "howdy"
    wrap_d = defer.ensureDeferred(
        cache.wrap(0, self.delayed_return, expected_result)
    )
    self.assertNoResult(wrap_d)
    # stop at 1 second to callback cache eviction callLater at that time, then another to set time at 2
    self.reactor.pump((1, 1))
    self.assertEqual(expected_result, self.successResultOf(wrap_d))
    # a second call should immediately return the result without a call to the
    # wrapped function
    unexpected = Mock(spec=())
    wrap2_d = defer.ensureDeferred(cache.wrap(0, unexpected))
    unexpected.assert_not_called()
    self.assertEqual(
        expected_result,
        self.successResultOf(wrap2_d),
        "cache should still have the result",
    )
    # (1 + 1 + 2) > 3.0, cache eviction timer is handled
    self.reactor.pump((2,))
    self.assertCountEqual([], cache.keys(), "cache should not have the result now")