Outils utiles
Intermédiairecargo install cargo-nextest # runner de tests plus rapide
cargo nextest run
cargo install cargo-llvm-cov # couverture de code
cargo llvm-cov --html
| Crate | Usage |
|---|---|
pretty_assertions | Diff coloré lisible dans assert_eq! |
mockall | Générer des mocks à partir de traits |
proptest | Tests basés sur des propriétés (données aléatoires) |
insta | Snapshot testing |
wiremock | Faux 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())); }