title: Mock a method with an object parameter with Mockito
body: <p>In my unit test i want to mock the interaction with elasticsearch by doing the following</p>
  
  <pre><code>when(cityDefinitionRepository.findCitiesNearby(geoPoint, SOURCE, 2)).thenReturn(cityDefinitionsArrival);
  when(cityDefinitionRepository.findCitiesNearby(geoPoint2, SOURCE, 2)).thenReturn(cityDefinitionsDeparture);
  SearchResult results = benerailService.doSearch(interpretation, 2, false);
  </code></pre>
  
  <p>the doSearch method contains</p>
  
  <pre><code>departureCityDefinitions = cityDefinitionRepository.findCitiesNearby(geo, SOURCE, distance);
  </code></pre>
  
  <p>When i debug my code i see that mockito is called in my doSearch method but it does not return the cityDefinitionsArrival object. This is probably because geoPoint and geo are two different objects.</p>
  
  <p>The geoPoint and geo object are both elasticsearch GeoPoints which contain the same latitude and longitude.</p>
  
  <p>I managed to get this to work by doing</p>
  
  <pre><code>when(cityDefinitionRepository.findCitiesNearby(any(geoPoint.getClass()), eq(SOURCE), eq(2))).thenReturn(cityDefinitionsArrival);
  when(cityDefinitionRepository.findCitiesNearby(any(geoPoint2.getClass()), eq(SOURCE), eq(2))).thenReturn(cityDefinitionsDeparture);
  </code></pre>
  
  <p>But now it ignores my latitude and longitude values and accepts any object of the GeoPoint class. This is a problem because in my doSearch method i have two usages of the findCitiesNearby, each with different latitude and longitude and I need to mock them both individually.</p>
  
  <p>Is this possible with Mockito?</p>
  
  <p><em>The cityDefinitionsArrival and cityDefinitionsDeparture are both ArrayLists,
  the SOURCE is a String value and
  the geo and geoPoint object:</em></p>
  
  <pre><code>GeoPoint geoPoint = new GeoPoint(50.850449999999995, 4.34878);
  GeoPoint geoPoint2 = new GeoPoint(48.861710, 2.348923);
  
  double lat = 50.850449999999995;
  double lon = 4.34878;
  GeoPoint geo = new GeoPoint(lat, lon);
  
  double lat2 = 48.861710;
  double lon2 = 2.348923;
  GeoPoint geo2 = new GeoPoint(lat2, lon2);
  </code></pre>