Table of Contents
Introduction
Les tests d’application sont un aspect crucial du développement Laravel. Ils vous permettent de vérifier que votre application fonctionne comme prévu sans avoir à la déployer sur un serveur ou dans le navigateur de l’utilisateur. Dans cette série, nous allons explorer les aspects clés des tests d’application et vous montrer comment les utiliser pour améliorer votre code.
Les Tests Unitaires
Même si les tests unitaires sont souvent associés aux classes et méthodes spécifiques, il est possible de tester des objets liés au framework sans avoir à se soucier de l’ensemble de l’application. Par exemple, vous pouvez utiliser Package::make() pour créer un objet en mémoire sans le faire passer par la base de données.
use Illuminate\Foundation\Testing\TestCase;
class PopularityTest extends TestCase
{
use RefreshDatabase;
public function test_votes_matter_more_than_views()
{
$package1 = Package::make(['votes' => 1, 'views' => 0]);
$package2 = Package::make(['votes' => 0, 'views' => 1]);
$this->assertTrue($package1->popularity > $package2->popularity);
}
}
Les Tests d’Application
Pour les tests d’application, nous allons utiliser la classe TestCase de Laravel par défaut. Cette classe étend l’abstrait Illuminate\Foundation\Testing\TestCase, qui fournit des outils pour tester votre application en entier.
use Illuminate\Foundation\Testing\TestCase;
class ExampleTest extends TestCase
{
// Votre code ici...
}
Les Tests HTTP
Pour les tests HTTP, nous allons utiliser les méthodes suivantes :
$this->get($uri, $headers = [])$this->post($uri, $data = [], $headers = [])$this->put($uri, $data = [], $headers = [])$this->patch($uri, $data = [], $headers = [])$this->delete($uri, $data = [], $headers = [])
Ces méthodes vous permettent de faire des requêtes HTTP (GET, POST, PUT, PATCH, DELETE) sur vos routes et d’assertionner les réponses.
public function test_it_stores_new_packages()
{
$response = $this->post(route('packages.store'), [
'name' => 'The greatest package',
]);
$response->assertOk();
}
Les Tests JSON
Pour les tests JSON, vous pouvez utiliser les méthodes suivantes :
$this->getJson($uri, $headers = [])$this->postJson($uri, $data = [], $headers = [])$this->putJson($uri, $data = [], $headers = [])$this->patchJson($uri, $data = [], $headers = [])$this->deleteJson($uri, $data = [], $headers = [])
Ces méthodes sont identiques à celles des tests HTTP, mais elles ajoutent des en-têtes spécifiques pour les requêtes JSON.
public function test_the_api_route_stores_new_packages()
{
$response = $this->postJson(route('api.packages.store'), [
'name' => 'The greatest package',
], ['X-API-Version' => '17']);
$response->assertOk();
}
Assertions
Les assertions sont utilisées pour vérifier les résultats de vos tests. Voici quelques exemples :
$response->assertOk(): Vérifie que le code de statut est 200.$response->assertStatus($status): Vérifie que le code de statut est égal à la valeur fournie.$response->assertSee($text)et$response->assertDontSee($text): Vérifient que la réponse contient (ou n’contient pas) le texte spécifié.
Conclusion
Les tests d’application sont un outil puissant pour améliorer votre code Laravel. En utilisant les méthodes et assertions disponibles, vous pouvez tester votre application en entier sans avoir à la déployer sur un serveur ou dans le navigateur de l’utilisateur. Nous espérons que cette série a aidé à comprendre comment utiliser les tests d’application pour améliorer votre code.
Prochaines étapes
- Explorez les autres outils de test disponibles, tels que
BrowserKitetDusk. - Apprenez à écrire des tests plus complexes qui simulent l’utilisation réelle de votre application.
- Intégrez les tests dans votre processus de développement pour améliorer la qualité de votre code.
In-Article Ad
Dev Mode
Mahmoud DEVO
Senior Full-Stack Developer
I'm a passionate full-stack developer with 10+ years of experience building scalable web applications. I write about Vue.js, Node.js, PostgreSQL, and modern DevOps practices.
Enjoyed this article?
Subscribe to get more tech content delivered to your inbox.
Related Articles
Commentaires sur le développement d'API avec Laravel : les m
Voici une proposition de méta-description pour votre article : "Découvrez les meilleures pratiques pour créer des applications Laravel performantes avec nos co
Apprendre Laravel : De la base aux fonctionnalités avancées
Voici une proposition de meta description : "Découvrez comment créer des applications web robustes avec Laravel ! Apprenez à utiliser les templates, les vues e
Gerer les donnees utilisateur avec Laravel Request : input, JSON, fichiers et segments URL
Guide complet sur la classe Request de Laravel : detection, validation, acces aux donnees JSON, upload de fichiers et segments de route.