package com.yiautos.psf.order.service.impl;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.*;
import org.mockito.junit.MockitoJUnitRunner;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@RunWith(MockitoJUnitRunner.class)
public class MockitoAnnotationTest {
@Mock
List<String> mockedList;
@Test
public void whenUseMockAnnotation_thenMockIsInjected() {
mockedList.add("one");
Mockito.verify(mockedList).add("one");
Assert.assertEquals(0, mockedList.size());
Mockito.when(mockedList.size()).thenReturn(100);
Assert.assertEquals(100, mockedList.size());
}
@Spy
List<String> spiedList = new ArrayList<String>();
@Test
public void whenUseSpyAnnotation_thenSpyIsInjected() {
spiedList.add("one");
spiedList.add("two");
Mockito.verify(spiedList).add("one");
Mockito.verify(spiedList).add("two");
Assert.assertEquals(2, spiedList.size());
Mockito.doReturn(100).when(spiedList).size();
Assert.assertEquals(100, spiedList.size());
}
@Mock
Map<String, String> wordMap;
@InjectMocks
MyDictionary dic = new MyDictionary();
@Test
public void whenUseInjectMocksAnnotation_thenCorrect() {
Mockito.when(wordMap.get("aWord")).thenReturn("aMeaning");
Assert.assertEquals("aMeaning", dic.getMeaning("aWord"));
}
@Mock HashMap<String, Integer> hashMap;
@Captor ArgumentCaptor<String> keyCaptor;
@Captor ArgumentCaptor<Integer> valueCaptor;
@Test
public void whenUseCaptorMocksAnnotation_thenCorrect() {
hashMap.put("A", 10);
Mockito.verify(hashMap).put(keyCaptor.capture(), valueCaptor.capture());
Assert.assertEquals("A", keyCaptor.getValue());
Assert.assertEquals(new Integer(10), valueCaptor.getValue());
}
public class MyDictionary {
Map<String, String> wordMap;
public MyDictionary() {
wordMap = new HashMap<String, String>();
}
public void add(final String word, final String meaning) {
wordMap.put(word, meaning);
}
public String getMeaning(final String word) {
return wordMap.get(word);
}
}
}