@Test
public void testCacheDoesNotRefreshBeforeTimeout() throws Throwable {

  // Initial load
  int a = sut.get();
  assertThat(a, is(INITIAL_VALUE));
  verify(delegate, times(1)).get();
  // Make supplier return new value and progress time, but not enough to trigger refresh
  lenient().when(delegate.get()).thenReturn(NEW_VALUE);
  now = now.plus(TIMEOUT).minusSeconds(1);
  // Should return initial value and not trigger refresh
  int b = sut.get();
  assertThat(b, is(INITIAL_VALUE));
  // Ensure that there is no call to refresh
  Thread.sleep(5000);
  verifyNoMoreInteractions(delegate);
}