</>
Plan du cours — 39/66

Outils utiles

Intermédiaire
cargo install cargo-nextest         # runner de tests plus rapide
cargo nextest run

cargo install cargo-llvm-cov        # couverture de code
cargo llvm-cov --html
CrateUsage
pretty_assertionsDiff coloré lisible dans assert_eq!
mockallGénérer des mocks à partir de traits
proptestTests basés sur des propriétés (données aléatoires)
instaSnapshot testing
wiremockFaux serveur HTTP pour tester des clients

Cas pratique : avec mockall, mocker un trait pour tester un service sans base de données.

#[cfg_attr(test, mockall::automock)]
trait UtilisateurRepo {
    fn trouver(&self, id: u32) -> Option<String>;
}

#[test]
fn service_retourne_le_nom() {
    let mut repo = MockUtilisateurRepo::new();
    repo.expect_trouver().with(mockall::predicate::eq(1)).returning(|_| Some("Alice".into()));
    assert_eq!(repo.trouver(1), Some("Alice".into()));
}