### Question:
CacheImpl implements Cache<T> { @Override public void put(String key, T value) { cacheStore.put(cacheKey(key), value, duration, context); } CacheImpl(String name, Class<T> cacheClass, Duration duration); @Override T get(String key, Function<String, T> loader); Optional<T> get(String key); @Override Map<String, T> getAll(Collection<String> keys, Function<String, T> loader); @Override void put(String key, T value); @Override void putAll(Map<String, T> values); @Override void evict(String key); @Override void evictAll(Collection<String> keys); final String name; final Class<T> cacheClass; final Duration duration; public CacheStore cacheStore; }### Answer:
@Test void put() { TestCache item = cacheItem("v1"); cache.put("key", item); verify(cacheStore).put("name:key", item, Duration.ofHours(1), cache.context); }