[JAVA] Exemple de code pour le test unitaire d'un contrôleur Spring Boot avec MockMvc

Cet environnement

Contrôleur à tester et modèle Thymeleaf

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class FooBarController {

  @GetMapping("/")
  public ModelAndView topPage(ModelAndView mav) {
    mav.setViewName("index");
    mav.addObject("userName", "Alice");
    return mav;
  }
}
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
  <meta charset="UTF-8">
  <title>My App</title>
</head>
<body>
<p id="user-name" th:text="${userName}"></p>
</body>
</html>

Classe pour tester le contrôleur

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.http.HttpHeaders;
import org.springframework.test.web.servlet.MockMvc;

import static org.hamcrest.Matchers.containsString;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.model;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.view;

@SpringBootTest
@AutoConfigureMockMvc
public class FooBarControllerTest {

  @Autowired
  private MockMvc mockMvc;

  //Chaîne d'agent utilisateur
  private static final String USER_AGENT =
    "Mozilla/5.0 (iPhone; CPU iPhone OS 13_0 like Mac OS X) " +
    "AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0 " +
    "Mobile/15E148 Safari/604.1";

  @Test
  public void testTopPage() throws Exception {
    this.mockMvc.perform(
      //Accès avec la méthode GET
      get("/")
      //Spécifier l'en-tête de la demande
      .header(HttpHeaders.USER_AGENT, USER_AGENT))
      //Tester le code d'état HTTP
      .andExpect(status().is2xxSuccessful())
      //Nom de la vue de test
      .andExpect(view().name("index"))
      //Attributs du modèle de test
      .andExpect(model().attribute("userName", "Alice"))
      //Type de contenu de test
      .andExpect(content().contentType("text/html;charset=UTF-8"))
      //Tester si la page contient le texte spécifié
      .andExpect(content().string(containsString("Alice")));
  }
}

Matériel de référence

Recommended Posts

Exemple de code pour le test unitaire d'un contrôleur Spring Boot avec MockMvc
Comment écrire un test unitaire pour Spring Boot 2
Testez le contrôleur avec Mock MVC dans Spring Boot
[JUnit 5] Ecrivez un test de validation avec Spring Boot! [Test de paramétrage]
J'ai écrit un test avec Spring Boot + JUnit 5 maintenant
De la création d'un projet Spring Boot à l'exécution d'une application avec VS Code
Ce à quoi j'étais accro lors du développement d'une application Spring Boot avec VS Code
Comment faire un test unitaire de Spring AOP
Écrire du code de test avec Spring Boot
Programmation Spring Boot avec VS Code
Contrôleur de cadre de test Spring avec Junit
Que faire si vous obtenez une erreur «302» dans le code de test du contrôleur dans Rails
Comment créer votre propre contrôleur correspondant à / error avec Spring Boot
[Avec un exemple de code] Les bases de Spring JDBC apprises avec l'application Blog
Écrivons un code de test pour la fonction de connexion avec Spring Boot
Effectuer un test de confirmation de transaction avec Spring Boot
Je veux écrire un test unitaire!
Essayez d'utiliser Spring Boot avec VS Code
Test de validation de classe de formulaire avec Spring Boot
[SpringBoot] Comment écrire un test de contrôleur
[Rspec] Flux de l'introduction de Rspec à l'écriture du code de test unitaire pour le modèle
Créez un site Web avec Spring Boot + Gradle (jdk1.8.x)
À propos de la conception de Spring Boot et de l'environnement de test unitaire
Créez une application de recherche simple avec Spring Boot
Comment utiliser MyBatis2 (iBatis) avec Spring Boot 1.4 (Spring 4)
Comment utiliser h2db intégré avec Spring Boot
Essayez d'implémenter la fonction de connexion avec Spring Boot
Comment ajouter un chemin de classe dans Spring Boot
Transition vers un contrôleur de vue avec Swift WebKit
Comment écrire du code de test avec la certification de base
Essayez d'automatiser la migration avec Spring Boot Flyway
[Java] Article pour ajouter une validation avec Spring Boot 2.3.1.
Je voulais classer la botte à ressort dans un multi-projet
Créer un environnement Spring Boot avec Windows + VS Code
Créer un serveur API Web avec Spring Boot
[Introduction à Spring Boot] Fonction d'authentification avec Spring Security
Créer un environnement de développement Spring Boot avec docker
03. J'ai envoyé une demande de Spring Boot à l'API de recherche de code postal
Comment effectuer UT avec Excel en tant que données de test avec Spring Boot + JUnit5 + DBUnit
[Exemple de code Spring inclus] Comment créer un formulaire et comment obtenir plusieurs enregistrements
J'ai essayé de cloner une application Web pleine de bugs avec Spring Boot
Exemple de traitement par lots de données sur DB avec des démarreurs Apache Camel Spring Boot
Paramètres de connexion à MySQL avec Spring Boot + Spring JDBC
Demande de Json dans le test unitaire du contrôleur à l'aide de MockMvc
Mappez automatiquement DTO aux entités avec l'API Spring Boot
Comment faire un test unitaire avec JVM sur une source à l'aide de RxAndroid
Notez que j'étais accro au traitement par lots avec Spring Boot
Un mémorandum de dépendance à Spring Boot2 x Doma2
Comment créer un projet Spring Boot dans IntelliJ
[Spring Boot] Comment créer un projet (pour les débutants)
[Introduction à Spring Boot] Soumettez un formulaire à l'aide de thymeleaf
Un mémorandum lors de la création d'un service REST avec Spring Boot
Créez un site de démonstration simple avec Spring Security avec Spring Boot 2.1
Comment démarrer par environnement avec Spring Boot de Maven
Faites un test unitaire avec Junit.
Tentative de SSR Vue.js avec Spring Boot et GraalJS
Télécharger avec Spring Boot
Code du port C avec de nombreux typecasts vers Swift