Amis de Spring Boot, bonjour ! (Si vous êtes arrivés à ce dernier chapitre, c’est forcément que vous êtes devenus amis. )
Pour conclure ce projet web, nous devons non seulement le tester, mais également le déployer.
Ce chapitre ne devrait pas être trop complexe pour vous, surtout si vous avez suivi la partie 3 du cours.
Réalisez un test d’intégration
D’ailleurs à tous ceux qui ont suivi la partie 3, je vous propose l’exercice suivant : réaliser un test d’intégration pour l’appel de la page d’accueil (donc URL : “/”) ! On ne vérifiera pas le contenu, mais uniquement le statut.
Pour les autres, je vous donne la solution juste en dessous .
À travers le screencast suivant, je vais vous montrer ma façon de faire, et je vais même vous en apprendre un peu plus. C’est parti !
C’était vraiment intéressant de réussir à tester en Java l’appel de notre contrôleur !
Je vous remets le code ici :
package com.openclassrooms.webapp;
import static org.hamcrest.CoreMatchers.containsString;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.view;
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.test.web.servlet.MockMvc;
@SpringBootTest
@AutoConfigureMockMvc
public class EmployeeControllerTest {
@Autowired
public MockMvc mockMvc;
@Test
public void testGetEmployees() throws Exception {
mockMvc.perform(get("/"))
.andDo(print())
.andExpect(status().isOk())
.andExpect(view().name("home"))
.andExpect(content().string(containsString("Laurent")));
}
}
Les points importants sont les suivants :
L’annotation @SpringBootTest permet au contexte Spring d’être chargé lors de l’exécution des tests.
Pour exécuter une requête au contrôleur, on utilise un objet MockMvc ; l’attribut correspondant doit être annoté @Autowired pour l'injection de la dépendance. Et la classe doit obligatoirement être annotée @AutoConfigureMockMvc, afin qu’un objet MockMvc soit disponible dans le contexte Spring (ainsi il pourra être injecté dans l’attribut).
La méthode perform a en paramètre l’URL à appeler. Puis il s’ensuit une suite d’instructions pour vérifier l’attendu :
status().isOk() : la réponse a un code de statut 200 ;
view().name(“home”) : le nom de vue retourné correspond au paramètre “home” ;
content().string(containsString("Laurent")) : le corps de la réponse contient à un moment ou à un autre le texte Laurent.
Notons également que andDo(print()) permet au retour de l’appel d’être affiché dans la console (on y verra donc tout le HTML généré).
Déployez votre application web
La dernière étape correspond au déploiement. Grâce à Spring Boot, c’est vraiment une formalité ; d’ailleurs, à vous de jouer : déployez votre application !
Votre projet est fonctionnel ? Super !
Le screencast suivant sera le dernier du cours, et je vais vous montrer comment déployer l’application web en ayant au préalable également déployé l’API.
Pour l’occasion, j’ai mis un peu de design sur les pages HTML (merci Bootstrap ). Regardons tout ça ensemble :
En résumé
L’application web peut être testée grâce à @SpringBootTest.
L’objet MockMvc permet d’exécuter des requêtes, comme le ferait un navigateur web.
Le déploiement est facilité avec Tomcat qui est embarqué dans le JAR généré.
Nous sommes arrivés au bout de ce cours sur Spring Boot, félicitations ! Vous avez appris de nombreuses choses, et j’aurais aimé vous en apprendre encore tellement !
L’univers Spring est immense, et il y a encore beaucoup à découvrir ; mais j’espère que cette base sera un fondement solide pour la suite de votre progression. Prenez le temps de pratiquer, et allez encore plus loin !
Voici quelques idées :
Augmentez votre capacité à utiliser Spring Web pour réaliser des applications web performantes.
Découvrez Spring Security pour la sécurisation de vos applications.
Plongez-vous dans l’architecture microservices grâce à Spring Cloud.
J’en suis convaincu, vous serez des développeurs encore plus performants et efficaces !