Récemment, je me demande s'il faut écrire en note ou en Qiita.
Comment écrire quand on oublie toujours et qu'on veut toujours se moquer d'une partie.
@Slf4j
@Service
public class HighHolidayService {
//Liste de vacances résumée sur une base mensuelle
Map<String, List<LocalDate>> highHolidayCache = new HashMap<>();
//Méthode à tester
public List<LocalDate> getHolidayList(LocalDate targetDate) {
String key = String.format("%d%02d", targetDate.getYear(), targetDate.getMonthValue());
if (highHolidayCache.containsKey(key)) {
return highHolidayCache.get(key);
}
List<LocalDate> holidayList = selectRecords(targetDate);
highHolidayCache.put(key, holidayList);
return holidayList;
}
//Je veux me moquer de cette méthode!!!!
List<LocalDate> selectRecords(LocalDate targetDate) {
return null;
}
}
--Comment rédiger un test
package jp.co.hogehoge.service;
import static org.mockito.Matchers.anyObject;
import static org.mockito.Mockito.doReturn;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;
import org.junit.Before;
import org.junit.Test;
import org.mockito.MockitoAnnotations;
import org.springframework.boot.test.mock.mockito.SpyBean;
public class HighHolidayServiceTest {
@SpyBean //de springboot@Comment écrire un espion
HighHolidayService highHolidayService;
@Before
public void init() {
MockitoAnnotations.initMocks(this);
}
@Test
public void Obtenir la liste des jours fériés cible() {
List<LocalDate> returnHolidayList = new ArrayList<>();
returnHolidayList.add(LocalDate.of(2019, 07, 28));
returnHolidayList.add(LocalDate.of(2019, 07, 21));
returnHolidayList.add(LocalDate.of(2019, 07, 15));
returnHolidayList.add(LocalDate.of(2019, 07, 14));
returnHolidayList.add(LocalDate.of(2019, 07, 7));
// doReturn(Objet à retourner).when(objet espion).method()
//Oubliez cette façon d'écrire! !!
doReturn(returnHolidayList).when(highHolidayService).selectRecords(anyObject());
LocalDate date = LocalDate.of(2019, 7, 15);
List<LocalDate> holidayList = highHolidayService.getHolidayList(date);
holidayList.forEach(System.out::println);
}
}
Il est normal de se moquer de chaque classe parce que je le fais souvent, mais j'oublie de me moquer d'une partie de la cible de test car elle n'apparaît qu'occasionnellement. .. Ou plutôt, il y a beaucoup de discussions qu'il vaut mieux classer (oui, mais c'est logique qui n'a pas besoin d'être tant que ça).
Recommended Posts