1+ @RunWith(MockitoJUnitRunner ::class )
2+ class ConfigurationTest {
3+
4+ @Mock
5+ lateinit var mock: Data
6+
7+ @Spy
8+ lateinit var spy: Data
9+
10+ lateinit var manager: Manager
11+
12+ @Before
13+ fun init () {
14+ manager = Manager (mock)
15+ }
16+
17+ @Test
18+ fun checkFetchDataReturnsMockValue () {
19+ assertNull(manager.fetchData())
20+ `when `(mock.getInfo()).thenReturn(" mock" )
21+ assertNull(manager.fetchData()) // now it fails
22+ assertEquals(" mock" , manager.fetchData())
23+ }
24+
25+ @Test
26+ fun checkFetchDataReturnsMultipleMockValue () {
27+ assertNull(manager.fetchData())
28+ `when `(mock.getInfo()).thenReturn(" mock1" , " mock2" )
29+ assertNull(manager.fetchData()) // now it fails
30+ assertEquals(" mock1" , manager.fetchData())
31+ assertEquals(" mock2" , manager.fetchData())
32+ assertEquals(" mock2" , manager.fetchData())
33+ }
34+
35+ @Test
36+ fun checkFetchDataTakesMultipleArgReturnsMockValue () {
37+ manager = Manager (spy)
38+ doReturn(" spy with arg" ).`when `(spy).getInfo(" arg1" )
39+ doReturn(" spy with arg" ).`when `(spy).getInfo(" arg2" )
40+ assertEquals(" spy with arg" , manager.fetchDataWithMessage(" arg1" ))
41+ assertEquals(" spy with arg" , manager.fetchDataWithMessage(" arg2" ))
42+ // not possible without reset using when.thenReturn
43+ }
44+
45+ @Test
46+ fun checkGetInfoForWrappedReturnsWrapperValue () {
47+ val data = Data ()
48+ val spyData = Mockito .spy(data)
49+ manager = Manager (spyData)
50+ doReturn(" wrapper" ).`when `(spyData).getInfo()
51+ assertEquals(" wrapper" , manager.fetchData())
52+ }
53+
54+ @Test
55+ fun checkFetchDataWithArgsReturnsMockValue () {
56+ Mockito .`when `(mock.getInfo(" arg" )).thenReturn(" mock with arg" )
57+ assertEquals(" mock with arg" , manager.fetchDataWithMessage(" arg" ))
58+ assertEquals(" mock with arg" , manager.fetchDataWithMessage(" whatever" )) // fails
59+ `when `(mock.getInfo(anyString())).thenReturn(" mock with arg" )
60+ assertEquals(" mock with arg" , manager.fetchDataWithMessage(" whatever" )) // now it pass
61+ }
62+
63+ @Test(expected = IllegalArgumentException ::class )
64+ fun checkFetchDataThrowsExceptionForSpecialCharactersArg () {
65+ `when `(mock.getInfo(" @" )).thenThrow(IllegalArgumentException ())
66+ manager.fetchDataWithMessage(" @" )
67+ }
68+ }
0 commit comments