Spring Boot : écrire le serveur (école d'ingénieur) · Chapitre 7 · Application directe du cours
Une doublure pour le stock
Tester l'application · niveau 2
Énoncé
Avec des doublures Mockito, vérifier qu'une commande de 4 exemplaires d'un livre qui en a 3 est refusée avec le bon message, que le stock du livre est inchangé, et que la commande n'est jamais enregistrée.
Corrigé
@ExtendWith(MockitoExtension.class)
class ServiceMockitoTest {
@Mock
LivreDepot livres;
@Mock
CommandeDepot commandes;
@Test
void unStockInsuffisantNeTouchePasAuStock() {
Livre algo = new Livre("9782956300021", "Introduction à l’algorithmique", "T. Cormen et al.",
"Informatique", new BigDecimal("89.00"), null, true, 3);
when(livres.findById("9782956300021")).thenReturn(Optional.of(algo));
var service = new CommandeService(livres, commandes,
new LibrairieProperties("La Librairie du Campus", new BigDecimal("2.00")));
assertThatThrownBy(() -> service.commander(new CommandeDemande(
List.of(new LigneDemande("9782956300021", 4)), "Ada", "ada@example.org", "boutique")))
.isInstanceOf(CommandeInvalideException.class)
.hasMessage("Stock insuffisant pour « Introduction à l’algorithmique » (3 en stock).");
assertThat(algo.getStock()).isEqualTo(3);
verify(commandes, never()).save(any());
}
}
La doublure de CommandeDepot n'a besoin d'aucune réponse : on vérifie seulement qu'elle n'a jamais été appelée.
100 % gratuit
La suite du chapitre est sur Adloun
- 9 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.