[JAVA] Wie man einige Methoden der zu testenden Klasse verspottet

Kürzlich frage ich mich, ob ich in Notiz oder Qiita schreiben soll.

Wie man schreibt, wenn man immer vergisst und sich immer über einen Teil lustig machen will.

@Slf4j
@Service
public class HighHolidayService {

	//Urlaubsliste monatlich zusammengefasst
	Map<String, List<LocalDate>> highHolidayCache = new HashMap<>();
	
    //Zu testende Methode
	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;
    }

    //Ich möchte diese Methode verspotten!!!!
	List<LocalDate> selectRecords(LocalDate targetDate) {
            return null;
	}
}

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    //von springboot@Wie schreibe ich Spion
	HighHolidayService highHolidayService;
	
    @Before
    public void init() {
        MockitoAnnotations.initMocks(this);
    }
	@Test
public void Holen Sie sich die Zielfeiertagsliste() {
		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(Objekt, das zurückgegeben werden soll).when(Spionageobjekt).method()
        //Vergiss diese Art zu schreiben! !!
		doReturn(returnHolidayList).when(highHolidayService).selectRecords(anyObject());

		LocalDate date = LocalDate.of(2019, 7, 15);
		List<LocalDate> holidayList = highHolidayService.getHolidayList(date);
		holidayList.forEach(System.out::println);
	}
}

Es ist in Ordnung, jede Klasse zu verspotten, weil ich es oft mache, aber ich vergesse, einen Teil des Testziels zu verspotten, weil es nur gelegentlich erscheint. .. Oder besser gesagt, es gibt viele Gespräche, die besser zu klassifizieren sind (ja, aber es ist eine Logik, die nicht so viel sein muss).

Recommended Posts

Wie man einige Methoden der zu testenden Klasse verspottet
Ein Teil der Klasse, der von der zu testenden Klasse im JMockit Mock-Methodenmemo aufgerufen wurde
Verwendung der Wrapper-Klasse
Verschiedene Methoden der String-Klasse
Verwendung von Klassenmethoden [Java]
[Java] Verwendung der File-Klasse
So bestimmen Sie die Anzahl der Parallelen
[Verarbeitung × Java] Verwendung der Klasse
So sortieren Sie eine Liste von SelectItems
[Java] Verwendung der Calendar-Klasse
So finden Sie heraus, welche Java-Version der Klassendatei kompiliert wurde
[Java] Wie man mit der String-Klasse an die Spitze eines bestimmten Strings kommt
So finden Sie die Ursache des Ruby-Fehlers
Ausführen einer Methode und Verspotten mit JUnit
Passen Sie an, wie der Inhalt von Recyclerview aufgeteilt wird
Wie komme ich zum heutigen Tag?
Ausgabe der Verwendung der Slice-Methode
So zeigen Sie das Ergebnis des Ausfüllens des Formulars an
[Java] So erhalten Sie die URL der Übergangsquelle
Wie schreibe ich Scala aus der Perspektive von Java
Rufen Sie den Namen des Testfalls in der JUnit-Testklasse ab
[Java] So erhalten Sie den Maximalwert von HashMap
[Rails] So ändern Sie den Spaltennamen der Tabelle
[Android] So erhalten Sie die Einstellungssprache des Terminals
[Rails] So erhalten Sie den Inhalt starker Parameter
So beurteilen Sie den Klick eines beliebigen Bildbereichs
So laden Sie eine ältere Version von Apache Tomcat herunter
[Swift] So erhalten Sie die Firebase-Dokument-ID
So erhalten Sie den Klassennamen des Arguments von LoggerFactory.getLogger, wenn Sie SLF4J in Java verwenden
So erhalten Sie den Namen einer Klasse / Methode, die in Java ausgeführt wird
So zeigen Sie das Auswahlfeld von time_select alle 30 Minuten an
Verwendung der Java-Klasse
So validieren Sie nachfolgende Tests, auch wenn der Test fehlschlägt
So erhalten Sie die längsten Informationen von Twitter ab dem 12.12.2016
So verschieben Sie eine andere Klasse mit einer Schaltflächenaktion einer anderen Klasse.
[Ruby] So rufen Sie den Inhalt des Doppel-Hash ab
Hinzufügen von Elementen ohne Angabe der Länge des Arrays
[Rails] So zeigen Sie eine Liste der Beiträge nach Kategorie an
So leiten Sie den letzten Tag des Monats in Java ab
Ich möchte die Liste der Klassen unter dem Paket rekursiv durchsuchen
So ändern Sie den Inhalt der JAR-Datei, ohne sie zu dekomprimieren
So überprüfen Sie die Erweiterung und Größe der hochgeladenen Dateien
[jsoup] So erhalten Sie die gesamte Dokumentation
[Swift] So ändern Sie dynamisch die Höhe der Symbolleiste auf der Tastatur
[Rails] So erhalten Sie die URL der Übergangsquelle und leiten sie um
[Swift5] So erhalten Sie ein Array und eine Reihe von Unterschieden zwischen Arrays
So legen Sie die IP-Adresse und den Hostnamen von CentOS8 fest
So zeigen Sie 0 auf der linken Seite des Standardeingabewerts an
[Rails / Heroku / MySQL] So setzen Sie die Datenbank der Rails-App auf Heroku zurück
So erhalten Sie den Inhalt von Map mithilfe des for-Anweisungsmemorandums
[Rails] So lassen Sie die Anzeige der Zeichenfolge der link_to-Methode weg
[Schienen] So ändern Sie den Seitentitel des Browsers für jede Seite
So erhalten Sie die ID des automatisch inkrementierten PRIMAY-Schlüssels in MyBatis