title: How to tell a Mockito mock object to return something different the next time it is called?
body: <p>So, I'm creating a mock object as a static variable on the class level like so...  In one test, I want <code>Foo.someMethod()</code> to return a certain value, while in another test, I want it to return a different value.  The problem I'm having is that it seems I need to rebuild the mocks to get this to work correctly.  I'd like to avoid rebuilding the mocks, and just use the same objects in each test. </p>
  
  <pre><code>class TestClass {
  
      private static Foo mockFoo;
  
      @BeforeClass
      public static void setUp() {
          mockFoo = mock(Foo.class);
      }
  
      @Test
      public void test1() {
          when(mockFoo.someMethod()).thenReturn(0);
  
          TestObject testObj = new TestObject(mockFoo);
  
          testObj.bar(); // calls mockFoo.someMethod(), receiving 0 as the value
  
      }
  
      @Test
      public void test2() {
          when(mockFoo.someMethod()).thenReturn(1);
  
          TestObject testObj = new TestObject(mockFoo);
  
          testObj.bar(); // calls mockFoo.someMethod(), STILL receiving 0 as the value, instead of expected 1.
  
      }
  
  }
  </code></pre>
  
  <p>In the second test, I'm still receiving 0 as the value when testObj.bar() is called... What is the best way to resolve this?  Note that I know I could use a different mock of <code>Foo</code> in each test, however, I have to chain multiple requests off of <code>mockFoo</code>, meaning I'd have to do the chaining in each test.</p>