Par Valentin Brosseau / @c4software
php artisan serve.Vous modifiez une méthode…
Que faut-il retester ?
À chaque modification, tout peut casser.
C'est ce qu'on appelle une régression.
Combien de temps pour retester à la main l'ensemble de votre TODO List ?
(connexion, inscription, ajout, suppression, reset de mot de passe…)
Du code qui teste votre code.
tests/ dans votre projet. Allez voir !class CalculatriceTest extends TestCase
{
public function test_addition(): void
{
$this->assertEquals(3, Calculatrice::addition(1, 2));
}
}Lisez-le à voix haute. C'est tout.
CalculatriceTest, ConnexionTest…test_.test_division_par_zero_interdite.$this->assertEquals(3, $resultat); // Vaut exactement 3
$this->assertTrue($estValide); // Vaut true
$this->assertNull($token); // Vaut null
$this->expectException(InvalidArgumentException::class); // Doit lever une exceptiontests/Unit) : teste une fonction / classe isolée.tests/Feature) : teste une fonctionnalité complète (route → contrôleur → réponse).public function test_page_connexion_accessible(): void
{
$this->get('/login')->assertStatus(200);
}Simule une vraie requête HTTP… sans navigateur, sans serveur lancé.
$this->get('/login')->assertStatus(200); // La page répond
$this->get('/todo')->assertRedirect('/login'); // Redirection
$this->get('/')->assertSee('Bienvenue'); // Le texte est présentSi un test crée des utilisateurs ou des TODO…
Ma base de données va être polluée, non ?
Pour les tests qui touchent à la base, Laravel propose une base dédiée, en mémoire vive :
use RefreshDatabase;Votre vraie base n'est jamais touchée.
$ php artisan test
PASS Tests\Unit\CalculatriceTest
✓ addition
Tests: 1 passedQuand faut-il écrire les tests ?
Avant ou après le code ?
Écrire le test avant le code.
Et on recommence.
Écrire un test pour du code qui n'existe pas…
Le test devient votre cahier des charges :
git push (CI/CD).RefreshDatabase : une base jetable pour les tests qui écrivent en base.php artisan test : toute votre application vérifiée en quelques secondes.Place au TP 🚀