Les Feature Tests représentent le cœur battant de votre suite de validation Laravel. Ils testent un flux HTTP complet depuis l'entrée du routeur jusqu'à la sortie du contrôleur, en passant par les middlewares de session, les règles Form Request et le rendu des templates Blade.
Utilisation de $this->get() / post() pour le web classique, et getJson() / postJson() pour les API REST.
Vérification des variables transmises avec assertViewHas('articles') et du texte présent avec assertSee().
Assertion précise des erreurs de validation de champs via assertSessionHasErrors(['email']).
Validation des flux de succès avec assertRedirect() et assertion des messages flash de session.
Modifiez les paramètres du formulaire pour observer les assertions chaînées de Laravel en temps réel.
POST /articlesVérifiez que le contrôleur passe bien la collection à la vue Blade et que le contenu s'affiche correctement.
it('affiche le catalogue et la pagination', function () {
Article::factory()->count(3)->create();
$response = $this->get('/articles');
$response->assertOk()
->assertViewIs('articles.index')
->assertViewHas('articles', function ($articles) {
return $articles->count() === 3;
})
->assertSee('Catalogue des Formations');
}); Vérifiez le rejet immédiat avec les règles unique, min et required.
it('rejette un titre déjà existant en base', function () {
Article::factory()->create(['title' => 'Architecture Clean']);
$response = $this->post('/articles', [
'title' => 'Architecture Clean',
'content' => 'Texte descriptif...',
]);
$response->assertSessionHasErrors([
'title' => 'The title has already been taken.'
]);
});