@Test
  public void shouldReturnDifferentForDifferentQueries() throws Exception {
    when(delegate.forName("hej")).thenReturn(lookup);
    when(delegate.forName("hopp")).thenReturn(lookup2);

    Lookup first = factory.forName("hej");
    Lookup second = factory.forName("hopp");

    assertThat(first == second, is(false));
  }
  @Test
  public void shouldCacheResultsForSubsequentQueries() throws Exception {
    when(delegate.forName("hej")).thenReturn(lookup, lookup2);

    Lookup first = factory.forName("hej");
    Lookup second = factory.forName("hej");

    assertThat(first == second, is(true));
  }
  @Test
  public void shouldReturnResultsFromDelegate() throws Exception {
    when(delegate.forName("a name")).thenReturn(lookup);

    assertThat(factory.forName("a name"), equalTo(lookup));
  }