[JAVA] [Spring Boot] Verspotten Sie die Inhalte, die außerhalb des Bereichs automatisch verdrahtet werden. [JUnit 5]

Hintergrund

Konvertieren Sie "Bean" in "Mock", um den Inhalt mit "Custom Validator" zu testen, z. B. "@ Autowired".

Weise

Die Implementierung ist wie folgt, bitte beachten Sie die Kommentare für jede Erklärung.

//Wenn Sie diese beiden anhängen@RunWith(MockitoJUnitRunner.class)Keine Notwendigkeit für Regeln oder Regeln
@ExtendWith(SpringExtension.class)
@SpringBootTest
class HogeTest {
    //Verspotten Sie die Bohne, diese Instanz wird injiziert
    @MockBean FugaDao fugaDao;

    @Test
    @DisplayName("Wenn du es nicht von Dao bekommen könntest")
    void isEmpty() {
        //Die Einstellungsmethode für Mock ist dieselbe wie bei Verwendung von normalem Mockito
        when(fugaDao.selectFuga(anyInt())).thenReturn(Optional.empty());

        /*Zur tatsächlichen Validierung weggelassen*/

    }
}

Ergänzung

Das Folgende ist eine Ergänzung zu dieser Methode.

1 Für Inhalte, die selbst in den Instanzinhalt einbezogen werden können, z. B. die Möglichkeit, in den Konstruktor einzutreten, ist es besser, direkt zu "verspotten" und zu testen, sofern keine besonderen Umstände vorliegen.

2 Es ist seltsam, dass das Testen einer konkreten Klasse von der Implementierung von "CustomValidator" abhängt. Daher ist es besser, "CustomValidator" zum "Mock" zu machen. Soweit ich recherchiert habe, habe ich die folgende Methode gefunden.

--Verwenden Sie Reflection, um "Custom Validator" durch "Mock" zu ersetzen

In diesem Artikel habe ich mich aus verschiedenen Gründen entschieden, keine der beiden Methoden zu verwenden. Daher teste ich mit der Methode zum Konvertieren von "Bean" in "Mock".

In Verbindung stehender Artikel

Recommended Posts

[Spring Boot] Verspotten Sie die Inhalte, die außerhalb des Bereichs automatisch verdrahtet werden. [JUnit 5]
[Spring Boot] Bis @Autowired in der Testklasse [JUnit5] ausgeführt wird
Beispielcode, der die Moustache-Vorlagen-Engine mit Spring Boot verwendet
Spring Boot zum ersten Mal
Was ist @Autowired im Spring Boot?
Ein Memo, das Spring Boot berührte
Was sind die Regeln in JUnit?
Das Problem, dass der Inhalt von Parametern vollständig in der Ansicht [Rails] angezeigt wird
Autowired-Felder in einer Klasse, die TextWebSocketHandler in Spring Boot erbt, werden NULL