[JAVA] [Spring Boot] Simulez le contenu câblé automatiquement en dehors de la portée [JUnit 5]

Contexte

Pour tester le contenu impliquant Custom Validator tel que l'utilisation de @ Autowired, créez Bean`` Mock.

manière

La mise en œuvre est la suivante, veuillez vous référer aux commentaires pour chaque explication.

//Si vous attachez ces deux@RunWith(MockitoJUnitRunner.class)Pas besoin de règles ou de règles
@ExtendWith(SpringExtension.class)
@SpringBootTest
class HogeTest {
    //Mock the bean, cette instance est injectée
    @MockBean FugaDao fugaDao;

    @Test
    @DisplayName("Si vous ne pouviez pas l'obtenir de Dao")
    void isEmpty() {
        //La méthode de réglage pour mock est la même que lors de l'utilisation normale de Mockito
        when(fugaDao.selectFuga(anyInt())).thenReturn(Optional.empty());

        /*Omis pour la validation réelle*/

    }
}

Supplément

Ce qui suit est un supplément sur cette méthode.

1 Pour les contenus qui peuvent être impliqués dans le contenu de l'instance par vous-même, comme être capable d'entrer dans le constructeur, il est préférable de directement «Mock» et de tester à moins qu'il y ait des circonstances spéciales.

2 Il est étrange que le test d'une classe concrète dépende de l'implémentation de CustomValidator, il est donc préférable de faire CustomValidator`` Mock. Dans la mesure où j'ai recherché, j'ai trouvé la méthode suivante.

--Utilisez la réflexion pour remplacer Custom Validator par Mock --Utilisez JMockito ou Power Mock pour" Mocker toutes les instances de cette classe "

Dans cet article, j'ai décidé de ne pas utiliser l'une ou l'autre de ces méthodes pour diverses raisons, donc je teste avec la méthode de conversion de «Bean» en «Mock».

Article associé

Recommended Posts

[Spring Boot] Simulez le contenu câblé automatiquement en dehors de la portée [JUnit 5]
[Spring Boot] Jusqu'à ce que @Autowired soit exécuté dans la classe de test [JUnit5]
Exemple de code qui utilise le moteur de modèle Moustache avec Spring Boot
Spring Boot pour la première fois
Qu'est-ce que @Autowired dans Spring Boot?
Un mémo qui a touché Spring Boot
Quelles sont les règles de JUnit?
Le problème que le contenu des paramètres est complètement affiché dans la vue [Rails]
Les champs auto-câblés dans une classe qui hérite de TextWebSocketHandler dans Spring Boot deviennent NULL