/*
* Copyright (c) 2007 Mockito contributors
* This program is made available under the terms of the MIT License.
*/
package org.mockitousage.stubbing;
import static org.mockito.Matchers.*;
import static org.mockito.Mockito.*;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mock;
import org.mockito.exceptions.verification.NoInteractionsWanted;
import org.mockitousage.IMethods;
import org.mockitoutil.TestBase;
@SuppressWarnings("deprecation")
public class DeprecatedStubbingTest extends TestBase {
@Mock private IMethods mock;
@Before
public void setup() {
mock = mock(IMethods.class);
}
@Test
public void shouldEvaluateLatestStubbingFirst() throws Exception {
stub(mock.objectReturningMethod(isA(Integer.class))).toReturn(100);
stub(mock.objectReturningMethod(200)).toReturn(200);
assertEquals(200, mock.objectReturningMethod(200));
assertEquals(100, mock.objectReturningMethod(666));
assertEquals("default behavior should return null", null, mock.objectReturningMethod("blah"));
}
@Test
public void shouldStubbingBeTreatedAsInteraction() throws Exception {
stub(mock.booleanReturningMethod()).toReturn(true);
mock.booleanReturningMethod();
try {
verifyNoMoreInteractions(mock);
fail();
} catch (NoInteractionsWanted e) {}
}
@Test
public void shouldAllowStubbingToString() throws Exception {
IMethods mockTwo = mock(IMethods.class);
stub(mockTwo.toString()).toReturn("test");
assertContains("Mock for IMethods", mock.toString());
assertEquals("test", mockTwo.toString());
}
@Test
public void shouldStubbingNotBeTreatedAsInteraction() {
stub(mock.simpleMethod("one")).toThrow(new RuntimeException());
stubVoid(mock).toThrow(new RuntimeException()).on().simpleMethod("two");
verifyZeroInteractions(mock);
}
@Test
public void shouldAllowConsecutiveStubbing() throws Exception {
//when
stub(mock.simpleMethod())
.toReturn("100")
.toReturn("200");
//then
assertEquals("100", mock.simpleMethod());
assertEquals("200", mock.simpleMethod());
}
}