如何存储一个方法,以便在给出一个我不期望的值时,它返回一个默认值?
例如:
- Map<String,String> map = mock(Map.class);
- when(map.get("abcd")).thenReturn("defg");
- when(map.get("defg")).thenReturn("ghij");
- when(map.get(anyString())).thenReturn("I don't know that string");
第2部分:如上所述但抛出异常:
- Map<String,String> map = mock(Map.class);
- when(map.get("abcd")).thenReturn("defg");
- when(map.get("defg")).thenReturn("ghij");
- when(map.get(anyString())).thenThrow(new IllegalArgumentException("I don't know that string"));
在上述示例中,最后一个存根优先,因此映射将始终返回默认值.
解决方法
我找到的最好的解决方案是扭转存根的顺序:
- Map<String,String> map = mock(Map.class);
- when(map.get(anyString())).thenReturn("I don't know that string");
- when(map.get("abcd")).thenReturn("defg");
- when(map.get("defg")).thenReturn("ghij");
当默认是抛出一个异常时,你可以使用doThrow和doReturn
- doThrow(new RuntimeException()).when(map).get(anyString());
- doReturn("defg").when(map).get("abcd");
- doReturn("ghij").when(map).get("defg");
http://docs.mockito.googlecode.com/hg/org/mockito/Mockito.html#doReturn%28java.lang.Object%29