Created
January 20, 2017 14:52
-
-
Save dimosr/5cac4bd586bb85c5bd04e0a673ab9568 to your computer and use it in GitHub Desktop.
Mockito when/thenReturn & doReturn/when patterns behaviour
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import org.junit.Assert; | |
import org.junit.Test; | |
import org.junit.runner.RunWith; | |
import org.mockito.Mock; | |
import org.mockito.runners.MockitoJUnitRunner; | |
import java.util.Map; | |
import static org.mockito.Mockito.doReturn; | |
import static org.mockito.Mockito.when; | |
@RunWith(MockitoJUnitRunner.class) | |
public class MockitoTest { | |
@Mock | |
Map<String, Integer> map; | |
/** (Succeeds) | |
* Map will always return: | |
* - 1, when queried with "first" | |
* - 2, when queried with "second" | |
*/ | |
@Test | |
public void testChainedWhenWithDifferentParams() { | |
when(map.get("first")) | |
.thenReturn(1); | |
when(map.get("second")) | |
.thenReturn(2); | |
Assert.assertEquals(Integer.valueOf(1), map.get("first")); | |
Assert.assertEquals(Integer.valueOf(2), map.get("second")); | |
} | |
/** (Fails) | |
* Map will always return: | |
* - 2, when asked with first | |
* | |
* The second command overrides the first expectation | |
*/ | |
@Test | |
public void testChainedWhenWithSameParam() { | |
when(map.get("first")) | |
.thenReturn(1); | |
when(map.get("first")) | |
.thenReturn(2); | |
Assert.assertEquals(Integer.valueOf(1), map.get("first")); | |
Assert.assertEquals(Integer.valueOf(2), map.get("first")); | |
} | |
/** (Succeeds) | |
* Map will return: | |
* - 1, at the first time it's invoked with "first" | |
* - 2, all the subsequent times when invoked with "first" | |
*/ | |
@Test | |
public void testChainedThenReturnWithSameParam() { | |
when(map.get("first")) | |
.thenReturn(1) | |
.thenReturn(2); | |
Assert.assertEquals(Integer.valueOf(1), map.get("first")); | |
Assert.assertEquals(Integer.valueOf(2), map.get("first")); | |
} | |
/** (Succeeds) | |
* Map will always return: | |
* - 1, when invoked with "first" | |
* - 2, when invoked with "second" | |
*/ | |
@Test | |
public void testChainedDoReturnWithDifferentParams() { | |
doReturn(1) | |
.when(map).get("first"); | |
doReturn(2) | |
.when(map).get("second"); | |
Assert.assertEquals(Integer.valueOf(1), map.get("first")); | |
Assert.assertEquals(Integer.valueOf(2), map.get("second")); | |
} | |
/** (Fails) | |
* Map will always return: | |
* - 2, when asked with first | |
* | |
* The second command overrides the first expectation | |
*/ | |
@Test | |
public void testChainedDoReturnWithSameParam() { | |
doReturn(1) | |
.when(map).get("first"); | |
doReturn(2) | |
.when(map).get("first"); | |
Assert.assertEquals(Integer.valueOf(1), map.get("first")); | |
Assert.assertEquals(Integer.valueOf(2), map.get("first")); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment