/*
* Copyright (c) 2007 Mockito contributors
* This program is made available under the terms of the MIT License.
*/
package org.mockitousage.misuse;
import org.junit.Test;
import org.mockito.InOrder;
import org.mockito.Mock;
import org.mockito.exceptions.misusing.MissingMethodInvocationException;
import org.mockitousage.IMethods;
import org.mockitoutil.TestBase;
import static junit.framework.TestCase.fail;
import static org.mockito.Mockito.*;
public class CleaningUpPotentialStubbingTest extends TestBase {
@Mock private IMethods mock;
@Test
public void shouldResetOngoingStubbingOnVerify() {
// first test
mock.booleanReturningMethod();
verify(mock).booleanReturningMethod();
// second test
assertOngoingStubbingIsReset();
}
@Test
public void shouldResetOngoingStubbingOnInOrder() {
mock.booleanReturningMethod();
InOrder inOrder = inOrder(mock);
inOrder.verify(mock).booleanReturningMethod();
assertOngoingStubbingIsReset();
}
@Test
public void shouldResetOngoingStubbingOnDoReturn() {
mock.booleanReturningMethod();
doReturn(false).when(mock).booleanReturningMethod();
assertOngoingStubbingIsReset();
}
private void assertOngoingStubbingIsReset() {
try {
//In real, there might be a call to real object or a final method call
//I'm modelling it with null
when(null).thenReturn("anything");
fail();
} catch (MissingMethodInvocationException e) {}
}
}