Spring Boot : écrire le serveur (école d'ingénieur) · Chapitre 10 · Application directe du cours
Tester le dépôt sur PostgreSQL
PostgreSQL et les migrations · niveau 2
Énoncé
Écrire un test en tranche JPA, sur PostgreSQL, de la recherche du catalogue : casse ignorée (« ÉTRANGER »), filtres absents, rayon inconnu.
Corrigé
/** Exercice 10.6 : la requête du dépôt, éprouvée sur PostgreSQL et non sur H2. */
@DataJpaTest
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
@Import(BaseDeTest.class)
class Ex6DepotTest {
@Autowired
LivreDepot livres;
@Test
void laRechercheIgnoreLaCasseEtLesFiltresAbsents() {
assertThat(livres.chercher(null, "ÉTRANGER")).extracting(Livre::getTitre).containsExactly("L’Étranger");
assertThat(livres.chercher("Littérature", null)).hasSize(2);
assertThat(livres.chercher(null, null)).hasSize(6);
}
@Test
void unRayonInconnuDonneUneListeVide() {
assertThat(livres.chercher("Cuisine", null)).isEmpty();
}
}
Sans replace = NONE, @DataJpaTest chercherait une base en mémoire à substituer, et n'en trouverait plus. Les données viennent des migrations, appliquées par Flyway au démarrage du conteneur ; chaque test est annulé à la fin (@DataJpaTest est transactionnel). Le deuxième appel est exactement celui qui échouait sans cast.
100 % gratuit
La suite du chapitre est sur Adloun
- 10 autres exercices corrigés dans ce chapitre
- Les 2 QCM du chapitre, le premier sans compte
- Le tuteur, qui guide pas à pas sans donner la réponse
Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.