title: How to validate the return value when calling a mocked object's method
body: <p>Using Mockito, is there a way to spy() on an object and verify that an object is called a given # of times with the specified arugments AND that it returns an expected value for these calls?</p>
  
  <p>I'd like to do something like the following:</p>
  
  <pre><code>class HatesTwos {
    boolean hates(int val) {
      return val == 2;
    }
  }
  
  HatesTwos hater = spy(new HatesTwos());
  hater.hates(1);
  assertFalse(verify(hater, times(1)).hates(1));
  
  reset(hater);
  hater.hates(2);
  assertTrue(verify(hater, times(1)).hates(2));
  </code></pre>