{"id":76589,"date":"2024-03-19T09:24:19","date_gmt":"2024-03-19T08:24:19","guid":{"rendered":"https:\/\/kinsta.com\/fr\/?p=76589&#038;preview=true&#038;preview_id=76589"},"modified":"2024-03-21T11:05:11","modified_gmt":"2024-03-21T10:05:11","slug":"tests-unitaires-laravel","status":"publish","type":"post","link":"https:\/\/kinsta.com\/fr\/blog\/tests-unitaires-laravel\/","title":{"rendered":"Ne sautez pas les tests unitaires et construisez de meilleures applications Laravel"},"content":{"rendered":"<p>Les tests unitaires sont essentiels dans le d\u00e9veloppement de logiciels, car ils permettent de s&rsquo;assurer que les composants de votre application fonctionnent comme pr\u00e9vu de mani\u00e8re isol\u00e9e. En \u00e9crivant des tests pour des unit\u00e9s de code sp\u00e9cifiques, vous pouvez identifier et corriger les erreurs d\u00e8s le d\u00e9but du d\u00e9veloppement, ce qui permet d&rsquo;obtenir des logiciels plus fiables et plus stables.<\/p>\n<p>Dans un pipeline d&rsquo;int\u00e9gration continue\/de livraison continue (CI\/CD), vous pouvez ex\u00e9cuter ces tests automatiquement apr\u00e8s avoir apport\u00e9 des modifications \u00e0 la base de code. Cela permet de s&rsquo;assurer que le nouveau code n&rsquo;introduit pas d&rsquo;erreurs ou ne casse pas les fonctionnalit\u00e9s existantes.<\/p>\n<p>Cet article souligne l&rsquo;importance des tests unitaires dans les <a href=\"https:\/\/kinsta.com\/fr\/blog\/installer-laravel\/\">applications Lavarel<\/a>, en d\u00e9taillant comment \u00e9crire des tests unitaires pour une application Laravel d\u00e9ploy\u00e9e \u00e0 l&rsquo;aide du <a href=\"https:\/\/sevalla.com\/application-hosting\/\">service d&rsquo;h\u00e9bergement d&rsquo;applications<\/a> de Kinsta.<br \/>\n<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" exclude=\"last\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc><\/p>\n<h2>Introduction \u00e0 PHPUnit<\/h2>\n<p><a href=\"https:\/\/kinsta.com\/fr\/blog\/outils-test-php\/#2-phpunit\">PHPUnit<\/a> est un framework de test largement utilis\u00e9 au sein de l&rsquo;\u00e9cosyst\u00e8me PHP, con\u00e7u pour les tests unitaires. Il dispose d&rsquo;une suite robuste d&rsquo;outils pour cr\u00e9er et ex\u00e9cuter des tests, ce qui en fait une ressource essentielle pour assurer la fiabilit\u00e9 et la qualit\u00e9 de votre base de code.<\/p>\n<p><a href=\"https:\/\/laravel.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">Laravel<\/a> prend en charge les tests avec <a href=\"https:\/\/phpunit.readthedocs.io\/\" target=\"_blank\" rel=\"noopener noreferrer\">PHPUnit<\/a> et est livr\u00e9 avec des m\u00e9thodes d&rsquo;aide pratiques qui vous permettent de tester votre application.<\/p>\n<p>La mise en place de PHPUnit dans un projet Laravel implique une configuration minimale. Laravel fournit un environnement de test pr\u00e9-configur\u00e9, comprenant un fichier <strong>phpunit.xml<\/strong> et un r\u00e9pertoire de <strong>tests <\/strong>d\u00e9di\u00e9 pour tes fichiers de test.<\/p>\n<p>Vous pouvez aussi modifier le fichier <strong>phpunit.xml<\/strong> pour d\u00e9finir des options personnalis\u00e9es afin d&rsquo;obtenir une exp\u00e9rience de test sur mesure. Vous pouvez \u00e9galement cr\u00e9er un fichier d&rsquo;environnement <strong>.env.testing <\/strong>dans le dossier racine du projet au lieu d&rsquo;utiliser le fichier <strong>.env<\/strong>.<\/p>\n<h2>Disposition des tests par d\u00e9faut dans Laravel<\/h2>\n<p><a href=\"https:\/\/kinsta.com\/fr\/sujets\/laravel\/\">Laravel<\/a> fournit une disposition structur\u00e9e des r\u00e9pertoires par d\u00e9faut. Le r\u00e9pertoire racine de votre projet Laravel contient un r\u00e9pertoire <strong>tests<\/strong> avec les sous-r\u00e9pertoires <strong>Feature <\/strong>et <strong>Unit <\/strong>. Cette disposition permet de s\u00e9parer facilement les diff\u00e9rents types de tests et de maintenir un environnement de test propre et organis\u00e9.<\/p>\n<p>Le fichier <strong>phpunit.xml<\/strong> d&rsquo;un projet Laravel est crucial pour orchestrer le processus de test, assurer la coh\u00e9rence des ex\u00e9cutions de tests et vous permettre de personnaliser le comportement de PHPUnit en fonction des exigences du projet. Il vous permet de d\u00e9finir comment ex\u00e9cuter les tests, notamment en d\u00e9finissant les suites de tests, en sp\u00e9cifiant l&rsquo;environnement de test et en configurant les connexions aux bases de donn\u00e9es.<\/p>\n<p>Ce fichier sp\u00e9cifie \u00e9galement que la session, le cache et l&rsquo;e-mail doivent \u00eatre d\u00e9finis sur le pilote de tableau, ce qui garantit qu&rsquo;aucune donn\u00e9e de session, de cache ou d&rsquo;e-mail ne persiste lors de l&rsquo;ex\u00e9cution des tests.<\/p>\n<aside role=\"note\" class=\"wp-block-kinsta-notice is-style-info\">\n            <h3>Info<\/h3>\n        <p>Le terme \u00ab pilote \u00bb fait r\u00e9f\u00e9rence \u00e0 un param\u00e8tre de configuration qui stocke ces donn\u00e9es dans un tableau en m\u00e9moire pendant les tests, ce qui permet de maintenir l&rsquo;isolation et d&#8217;emp\u00eacher la persistance des donn\u00e9es entre les ex\u00e9cutions de tests.<\/p>\n<\/aside>\n\n<p>Vous pouvez effectuer plusieurs types de tests sur votre application Laravel :<\/p>\n<ul>\n<li><strong>Tests unitaires &#8211;<\/strong> se concentrent sur les composants individuels de votre code, tels que les classes, les m\u00e9thodes et les fonctions. Ces tests restent isol\u00e9s de l&rsquo;application Laravel et v\u00e9rifient que des unit\u00e9s de code sp\u00e9cifiques fonctionnent comme pr\u00e9vu. Notez que les tests d\u00e9finis dans le r\u00e9pertoire <strong>tests\/Unit <\/strong>ne d\u00e9marrent pas l&rsquo;application Laravel, ce qui signifie qu&rsquo;ils ne peuvent pas acc\u00e9der \u00e0 la <a href=\"https:\/\/kinsta.com\/database\/\">base de donn\u00e9es<\/a> ou aux autres services offerts par le framework.<\/li>\n<li><strong>Tests de fonctionnalit\u00e9s &#8211;<\/strong> valident les fonctionnalit\u00e9s plus g\u00e9n\u00e9rales de votre application. Ces tests simulent des requ\u00eates et des r\u00e9ponses HTTP, vous permettant de tester les routes, les contr\u00f4leurs et l&rsquo;int\u00e9gration de divers composants. Les tests de fonctionnalit\u00e9s permettent de s&rsquo;assurer que les diff\u00e9rentes parties de votre application fonctionnent ensemble comme pr\u00e9vu.<\/li>\n<li><strong>Tests de navigateur &#8211; <\/strong>vont plus loin en automatisant les interactions avec le navigateur. Les tests utilisent <a href=\"https:\/\/laravel.com\/docs\/10.x\/dusk\" target=\"_blank\" rel=\"noopener noreferrer\">Laravel Dusk<\/a>, un outil d&rsquo;automatisation et de test du navigateur, pour simuler les interactions des utilisateurs, comme remplir des formulaires et cliquer sur des boutons. Les tests de navigateur sont cruciaux pour valider le comportement de votre application et l&rsquo;exp\u00e9rience utilisateur dans les navigateurs du monde r\u00e9el.<\/li>\n<\/ul>\n<h2>Concepts de d\u00e9veloppement pilot\u00e9 par les tests<\/h2>\n<p>Le d\u00e9veloppement pilot\u00e9 par les tests (TDD) est une approche de d\u00e9veloppement de logiciels qui met l&rsquo;accent sur les tests avant d&rsquo;impl\u00e9menter le code. Cette approche suit un processus connu sous le nom de cycle \u00ab red-green-refractor \u00bb.<\/p>\n<figure style=\"width: 1001px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2024\/03\/tdd-cycle.jpg\" alt=\"Le cycle de d\u00e9veloppement pilot\u00e9 par les tests montrant le cycle red-green-refractor.\" width=\"1001\" height=\"471\"><figcaption class=\"wp-caption-text\">Le cycle de d\u00e9veloppement pilot\u00e9 par les tests montrant le cycle red-green-refractor.<\/figcaption><\/figure>\n<p>Voici une explication de ce cycle :<\/p>\n<ul>\n<li><strong>Phase rouge<\/strong> &#8211; \u00c9crivez un nouveau test pour d\u00e9finir une fonctionnalit\u00e9 ou une am\u00e9lioration d&rsquo;un test existant avant d&rsquo;impl\u00e9menter le code r\u00e9el. Le test doit \u00e9chouer (comme le signifie le \u00ab rouge \u00bb) parce qu&rsquo;il n&rsquo;y a pas de code correspondant pour le faire passer.<\/li>\n<li><strong>Phase verte<\/strong> &#8211; \u00c9crivez juste assez de code pour faire passer le test qui a \u00e9chou\u00e9, en le faisant passer du rouge au vert. Le code ne sera pas optimal, mais il r\u00e9pond aux exigences du cas de test correspondant.<\/li>\n<li><strong>Phase de remaniement<\/strong> &#8211; Remaniez le code pour am\u00e9liorer sa lisibilit\u00e9, sa maintenabilit\u00e9 et ses performances sans modifier son comportement. \u00c0 ce stade, vous pouvez confortablement apporter des modifications au code sans vous inqui\u00e9ter des probl\u00e8mes de r\u00e9gression, car les cas de test existants les d\u00e9tectent.<\/li>\n<\/ul>\n<p>Le TDD pr\u00e9sente plusieurs avantages :<\/p>\n<ul>\n<li><strong>D\u00e9tection pr\u00e9coce des bogues<\/strong> &#8211; Le TDD permet de d\u00e9tecter les bogues d\u00e8s le d\u00e9but du processus de d\u00e9veloppement, ce qui contribue \u00e0 r\u00e9duire le cout et le temps de correction des probl\u00e8mes plus tard dans le cycle de d\u00e9veloppement.<\/li>\n<li><strong>Am\u00e9lioration de la conception<\/strong> &#8211; Le TDD encourage un code modulaire et faiblement coupl\u00e9 pour une meilleure conception du logiciel. Il vous encourage \u00e0 r\u00e9fl\u00e9chir \u00e0 l&rsquo;interface et aux interactions des composants avant la mise en \u0153uvre.<\/li>\n<li><strong>Confiance dans le remaniement<\/strong> &#8211; Vous pouvez remanier le code en toute confiance, sachant que les tests existants identifient rapidement les r\u00e9gressions introduites lors du remaniement.<\/li>\n<li><strong>Documentation vivante<\/strong> &#8211; Les cas de test servent de documentation vivante en fournissant des exemples de la fa\u00e7on dont le code doit se comporter. Cette documentation est toujours \u00e0 jour puisque les tests qui \u00e9chouent indiquent des probl\u00e8mes dans le code.<\/li>\n<\/ul>\n<p>Dans le d\u00e9veloppement Laravel, vous appliquez les principes TDD en \u00e9crivant des tests pour les composants tels que les contr\u00f4leurs, les mod\u00e8les et les services avant de les mettre en \u0153uvre.<\/p>\n<p>L&rsquo;environnement de test de Laravel, notamment PHPUnit, fournit des m\u00e9thodes et des assertions pratiques pour faciliter le TDD, ce qui garantit que vous pouvez cr\u00e9er des tests significatifs et suivre efficacement le cycle red-green-refactor.<\/p>\n<h2>Exemples de base de tests unitaires<\/h2>\n<p>Cette section explique comment \u00e9crire un test simple pour v\u00e9rifier les fonctionnalit\u00e9s de ton mod\u00e8le.<\/p>\n<h3>Pr\u00e9-requis<\/h3>\n<p>Pour suivre le cours, vous avez besoin de ce qui suit :<\/p>\n<ul>\n<li>R\u00e9pondre aux pr\u00e9-requis list\u00e9s dans le <a href=\"https:\/\/kinsta.com\/fr\/blog\/blog-laravel\/#prerequisites\">guide du blog Laravel<\/a>.<\/li>\n<li>Une application Laravel. Ce tutoriel utilise l&rsquo;application cr\u00e9\u00e9e dans le guide dont le lien figure ci-dessus. Vous pouvez le lire et cr\u00e9er l&rsquo;application du blog, mais si vous n&rsquo;avez besoin que du code source pour mettre en \u0153uvre les tests, suivez les \u00e9tapes ci-dessous.<\/li>\n<li><a href=\"https:\/\/xdebug.org\/docs\/install\" target=\"_blank\" rel=\"noopener noreferrer\">Xdebug<\/a> install\u00e9 et configur\u00e9 avec le <a href=\"https:\/\/xdebug.org\/docs\/code_coverage#mode\" target=\"_blank\" rel=\"noopener noreferrer\">mode couverture activ\u00e9<\/a>.<\/li>\n<\/ul>\n<h3>Configurer le projet<\/h3>\n<ol start=\"1\">\n<li>Ex\u00e9cutez cette commande dans une fen\u00eatre de terminal pour cloner le projet.\n<pre><code class=\"language-bash\">git clone https:\/\/github.com\/VirtuaCreative\/kinsta-laravel-blog.git<\/code><\/pre>\n<\/li>\n<li>D\u00e9placez-vous dans le dossier du projet et ex\u00e9cutez la commande <code>composer install<\/code> pour installer les d\u00e9pendances du projet.<\/li>\n<li>Renommez le fichier <strong>env.example<\/strong> en <strong>.env<\/strong>.<\/li>\n<li>Ex\u00e9cutez la commande <code>php artisan key:generate<\/code> pour g\u00e9n\u00e9rer une cl\u00e9 d&rsquo;application.<\/li>\n<\/ol>\n<h3>Cr\u00e9er et ex\u00e9cuter des tests<\/h3>\n<p>Pour commencer, assurez-vous d&rsquo;avoir le code du projet sur votre machine. Le mod\u00e8le que vous aller tester est le mod\u00e8le <code>Post<\/code> d\u00e9fini dans le fichier <strong>app\/Http\/Models\/Post.php<\/strong>. Ce mod\u00e8le comprend plusieurs attributs \u00e0 remplir, tels que <code>title<\/code>, <code>description<\/code>, et <code>image<\/code>.<\/p>\n<p>Votre t\u00e2che consiste \u00e0 \u00e9laborer des tests unitaires simples pour ce mod\u00e8le. L&rsquo;un d&rsquo;eux v\u00e9rifie que les attributs sont correctement d\u00e9finis, tandis que l&rsquo;autre examine l&rsquo;affectation de masse en essayant d&rsquo;affecter un attribut non remplissable.<\/p>\n<ol start=\"1\">\n<li>Ex\u00e9cutez la commande <code>php artisan make:test PostModelFunctionalityTest --unit<\/code> pour cr\u00e9er un nouveau sc\u00e9nario de test. L&rsquo;option <code>--unit<\/code> sp\u00e9cifie qu&rsquo;il s&rsquo;agit d&rsquo;un test unitaire et l&rsquo;enregistre dans le r\u00e9pertoire <strong>tests\/Unit <\/strong>.<\/li>\n<li>Ouvrez le fichier <strong>tests\/Unit\/PostModelFunctionalityTest.php <\/strong>et remplacez la fonction <code>test_example<\/code> par ce code :\n<pre><code class=\"language-php\">public function test_attributes_are_set_correctly()\n   {\n       \/\/ create a new post instance with attributes\n       $post = new Post([\n           'title' =&gt; 'Sample Post Title',\n           'description' =&gt; 'Sample Post Description',\n           'image' =&gt; 'sample_image.jpg',\n       ]);\n\n       \/\/ check if you set the attributes correctly\n       $this-&gt;assertEquals('Sample Post Title', $post-&gt;title);\n       $this-&gt;assertEquals('Sample Post Description', $post-&gt;description);\n       $this-&gt;assertEquals('sample_image.jpg', $post-&gt;image);\n   }\n\n   public function test_non_fillable_attributes_are_not_set()\n   {\n       \/\/ Attempt to create a post with additional attributes (non-fillable)\n       $post = new Post([\n           'title' =&gt; 'Sample Post Title',\n           'description' =&gt; 'Sample Post Description',\n           'image' =&gt; 'sample_image.jpg',\n           'author' =&gt; 'John Doe',\n       ]);\n\n       \/\/ check that the non-fillable attribute is not set on the post instance\n       $this-&gt;assertArrayNotHasKey('author', $post-&gt;getAttributes());\n   }<\/code><\/pre>\n<p>Ce code d\u00e9finit deux m\u00e9thodes de test.<\/p>\n<p>La premi\u00e8re cr\u00e9e une instance <code>Post<\/code> avec les attributs sp\u00e9cifi\u00e9s et, \u00e0 l&rsquo;aide de la m\u00e9thode d&rsquo;assertion <code>assertEquals<\/code>, v\u00e9rifie que les attributs <code>title<\/code>, <code>description<\/code> et <code>image<\/code> sont correctement d\u00e9finis.<\/p>\n<p>La seconde m\u00e9thode tente de cr\u00e9er une instance <code>Post<\/code> avec un attribut suppl\u00e9mentaire non remplissable (<code>author<\/code>) et v\u00e9rifie que cet attribut n&rsquo;est pas d\u00e9fini sur l&rsquo;instance de mod\u00e8le \u00e0 l&rsquo;aide de la m\u00e9thode d&rsquo;assertion <code>assertArrayNotHasKey<\/code>.<\/li>\n<li>Assurez-vous d&rsquo;ajouter l&rsquo;instruction <code>use<\/code> suivante dans le m\u00eame fichier :\n<pre><code class=\"language-php\">use App\\Models\\Post;<\/code><\/pre>\n<\/li>\n<li>Ex\u00e9cutez la commande <code>php artisan config:clear<\/code> pour vider le cache de configuration.<\/li>\n<li>Pour effectuer ces tests, ex\u00e9cutez la commande suivante :\n<pre><code class=\"language-php\">php artisan test tests\/Unit\/PostModelFunctionalityTest.php<\/code><\/pre>\n<p>Tous les tests doivent r\u00e9ussir, et le terminal doit afficher les r\u00e9sultats et le temps total d&rsquo;ex\u00e9cution des tests.<\/li>\n<\/ol>\n<h3>D\u00e9boguer les tests<\/h3>\n<p>Si les tests \u00e9chouent, vous pouvez les d\u00e9boguer en suivant les \u00e9tapes suivantes :<\/p>\n<ol start=\"1\">\n<li>Examinez le message d&rsquo;erreur dans le terminal. Laravel fournit des messages d&rsquo;erreur d\u00e9taill\u00e9s qui mettent le doigt sur le probl\u00e8me. Lisez attentivement le message d&rsquo;erreur pour comprendre pourquoi le test a \u00e9chou\u00e9.<\/li>\n<li>Inspectez les tests et le code que vous \u00eates en train de tester pour identifier les anomalies.<\/li>\n<li>Assurez-vous de configurer correctement les donn\u00e9es et les d\u00e9pendances n\u00e9cessaires au test.<\/li>\n<li>Utilisez des outils de d\u00e9bogage comme la fonction <a href=\"https:\/\/kinsta.com\/fr\/blog\/laravel-vs-wordpress\/#helper-functions\">dd()<\/a> de Laravel pour inspecter les variables et les donn\u00e9es \u00e0 des points sp\u00e9cifiques de votre code de test.<\/li>\n<li>Une fois que vous avez identifi\u00e9 le probl\u00e8me, apportez les modifications n\u00e9cessaires et ex\u00e9cutez \u00e0 nouveau les tests jusqu&rsquo;\u00e0 ce qu&rsquo;ils r\u00e9ussissent.<\/li>\n<\/ol>\n<h2>Tests et bases de donn\u00e9es<\/h2>\n<p>Laravel offre un moyen pratique de configurer un environnement de test en utilisant une <a href=\"https:\/\/kinsta.com\/fr\/blog\/sqlite-vs-mysql\/\">base de donn\u00e9es SQLite<\/a> en m\u00e9moire, qui est rapide et ne persiste pas les donn\u00e9es entre les ex\u00e9cutions de tests. Pour configurer l&rsquo;environnement de la base de donn\u00e9es de test et \u00e9crire des tests qui interagissent avec la base de donn\u00e9es, suivez les \u00e9tapes ci-dessous :<\/p>\n<ol start=\"1\">\n<li>Ouvrez le fichier <strong>phpunit.xml<\/strong> et d\u00e9commentez les lignes de code suivantes :\n<pre><code class=\"language-xml\">&lt;env name=\"DB_CONNECTION\" value=\"sqlite\"\/&gt;\n&lt;env name=\"DB_DATABASE\" value=\":memory:\"\/&gt;<\/code><\/pre>\n<\/li>\n<li>Ex\u00e9cutez la commande <code>php artisan make:test PostCreationTest --unit<\/code> pour cr\u00e9er un nouveau cas de test.<\/li>\n<li>Ouvrez le fichier <strong>tests\/Unit\/PostCreationTest.php <\/strong>et remplace la m\u00e9thode <code>test_example<\/code> par le code ci-dessous :\n<pre><code class=\"language-php\">public function testPostCreation()\n   {\n       \/\/ Create a new post and save it to the database\n       $post = Post::create([\n           'title' =&gt; 'Sample Post Title',\n           'description' =&gt; 'Sample Post Description',\n           'image' =&gt; 'sample_image.jpg',\n       ]);\n\n       \/\/ Retrieve the post from the database and assert its existence\n       $createdPost = Post::find($post-&gt;id);\n       $this-&gt;assertNotNull($createdPost);\n       $this-&gt;assertEquals('Sample Post Title', $createdPost-&gt;title);\n   }<\/code><\/pre>\n<\/li>\n<li>Assurez-vous d&rsquo;ajouter l&rsquo;instruction <code>use<\/code> suivante :\n<pre><code class=\"language-php\">use App\\Models\\Post;<\/code><\/pre>\n<p>Actuellement, la classe <code>PostCreationTest<\/code> \u00e9tend la classe de base <code>PHPUnitFrameworkTestCase<\/code>. La classe de base est couramment utilis\u00e9e pour les tests unitaires lorsqu&rsquo;on travaille avec PHPUnit directement, en dehors de Laravel, ou lorsqu&rsquo;on \u00e9crit des tests pour un composant qui n&rsquo;est pas \u00e9troitement coupl\u00e9 \u00e0 Laravel. Cependant, vous avez besoin d&rsquo;acc\u00e9der \u00e0 la base de donn\u00e9es, ce qui signifie que vous devez modifier la classe <code>PostCreationTest<\/code> pour qu&rsquo;elle \u00e9tende la classe <code>TestsTestCase<\/code>.<\/p>\n<p>Cette derni\u00e8re classe adapte la classe <code>PHPUnitFrameworkTestCase<\/code> aux applications Laravel. Elle fournit des fonctionnalit\u00e9s suppl\u00e9mentaires et une configuration sp\u00e9cifique \u00e0 Laravel, comme l&rsquo;alimentation de la base de donn\u00e9es et la configuration de l&rsquo;environnement de test.<\/li>\n<li>Assurez-vous de remplacer la d\u00e9claration <code>use PHPUnitFrameworkTestCase;<\/code> par <code>use TestsTestCase;<\/code>.N&rsquo;oubliez pas que vous avez configur\u00e9 l&rsquo;environnement de test pour qu&rsquo;il utilise une base de donn\u00e9es SQLite en m\u00e9moire. Vous devez donc migrer la base de donn\u00e9es avant d&rsquo;ex\u00e9cuter les tests. Pour cela, utilise le trait <code>IlluminateFoundationTestingRefreshDatabase<\/code>. Ce trait migre la base de donn\u00e9es si le sch\u00e9ma n&rsquo;est pas \u00e0 jour et r\u00e9initialise la base de donn\u00e9es apr\u00e8s chaque test pour s&rsquo;assurer que les donn\u00e9es du test pr\u00e9c\u00e9dent n&rsquo;interf\u00e8rent pas avec les tests suivants.<\/li>\n<li>Ajoutez l&rsquo;instruction <code>use<\/code> suivante au fichier <strong>tests\/Unit\/PostCreationTest.php <\/strong>pour incorporer ce trait dans votre code :\n<pre><code class=\"language-php\">use Illuminate\\Foundation\\Testing\\RefreshDatabase;<\/code><\/pre>\n<\/li>\n<li>Ensuite, ajoutez la ligne de code suivante juste avant la m\u00e9thode <code>testPostCreation<\/code>:\n<pre><code class=\"language-php\">use RefreshDatabase;<\/code><\/pre>\n<\/li>\n<li>Ex\u00e9cutez la commande <code>php artisan config:clear<\/code> pour vider le cache de configuration.<\/li>\n<li>Pour effectuer ce test, ex\u00e9cutez la commande suivante :\n<pre><code class=\"language-php\">php artisan test tests\/Unit\/PostCreationTest.php<\/code><\/pre>\n<p>Les tests doivent r\u00e9ussir, et le terminal doit afficher les r\u00e9sultats du test et la dur\u00e9e totale du test.<\/li>\n<\/ol>\n<h2>Tests de fonctionnalit\u00e9s<\/h2>\n<p>Alors que les tests unitaires v\u00e9rifient les composants individuels de l&rsquo;application de mani\u00e8re isol\u00e9e, les tests de fonctionnalit\u00e9s v\u00e9rifient des parties plus importantes du code, comme la mani\u00e8re dont plusieurs objets interagissent. Les tests de fonctionnalit\u00e9s sont essentiels pour plusieurs raisons :<\/p>\n<ol start=\"1\">\n<li><strong>Validation de bout en bout<\/strong> &#8211; Confirme que l&rsquo;ensemble de la fonctionnalit\u00e9 fonctionne de mani\u00e8re transparente, y compris les interactions entre les diff\u00e9rents composants tels que les contr\u00f4leurs, les mod\u00e8les, les vues et m\u00eame la base de donn\u00e9es.<\/li>\n<li><strong>Test de bout en bout<\/strong> &#8211; Couvre l&rsquo;ensemble du flux d&rsquo;utilisateurs, de la requ\u00eate initiale \u00e0 la r\u00e9ponse finale, ce qui peut permettre de d\u00e9couvrir des probl\u00e8mes que les tests unitaires risquent de manquer. Cette capacit\u00e9 les rend pr\u00e9cieux pour tester les parcours des utilisateurs et les sc\u00e9narios complexes.<\/li>\n<li><strong>Assurance de l&rsquo;exp\u00e9rience utilisateur<\/strong> &#8211; imite les interactions des utilisateurs, ce qui permet de v\u00e9rifier que l&rsquo;exp\u00e9rience utilisateur est coh\u00e9rente et que la fonctionnalit\u00e9 fonctionne comme pr\u00e9vu.<\/li>\n<li><strong>D\u00e9tection des r\u00e9gressions<\/strong> &#8211; Permet de d\u00e9tecter les r\u00e9gressions et les changements qui brisent le code lors de l&rsquo;introduction d&rsquo;un nouveau code. Si une fonctionnalit\u00e9 existante commence \u00e0 \u00e9chouer lors d&rsquo;un test de fonctionnalit\u00e9, cela indique que quelque chose s&rsquo;est cass\u00e9.<\/li>\n<\/ol>\n<p>Maintenant, cr\u00e9ez un test de fonctionnalit\u00e9 pour <code>PostController<\/code> dans le fichier <strong>app\/Http\/Controllers\/PostController.php<\/strong>. Vous vous concentrez sur la m\u00e9thode <code>store<\/code>, qui valide les donn\u00e9es entrantes et cr\u00e9e et stocke les messages dans la base de donn\u00e9es.<\/p>\n<p>Le test simule un utilisateur qui cr\u00e9e un nouvel article par le biais d&rsquo;une interface web, en s&rsquo;assurant que le code stocke l&rsquo;article dans la base de donn\u00e9es et redirige l&rsquo;utilisateur vers la page Index des articles apr\u00e8s la cr\u00e9ation. Pour cela, suivez les \u00e9tapes suivantes :<\/p>\n<ol start=\"1\">\n<li>Ex\u00e9cutez la commande <code>php artisan make:test PostControllerTest<\/code> pour cr\u00e9er un nouveau cas de test dans le r\u00e9pertoire <strong>tests\/Features<\/strong>.<\/li>\n<li>Ouvrez le fichier <strong>tests\/Feature\/PostControllerTest.php<\/strong> et remplacez la m\u00e9thode <code>test_example<\/code> par ce code :\n<pre><code class=\"language-php\">use RefreshDatabase; \/\/ Refresh the database after each test\n\n   public function test_create_post()\n   {\n       \/\/ Simulate a user creating a new post through the web interface\n       $response = $this-&gt;post(route('posts.store'), [\n           'title' =&gt; 'New Post Title',\n           'description' =&gt; 'New Post Description',\n           'image' =&gt; $this-&gt;create_test_image(),\n       ]);\n\n       \/\/ Assert that the post is successfully stored in the database\n       $this-&gt;assertCount(1, Post::all());\n\n       \/\/ Assert that the user is redirected to the Posts Index page after post creation\n       $response-&gt;assertRedirect(route('posts.index'));\n   }\n\n   \/\/ Helper function to create a test image for the post\n   private function create_test_image()\n   {\n       \/\/ Create a mock image file using Laravel's UploadedFile class\n       $file = UploadedFile::fake()-&gt;image('test_image.jpg');\n\n       \/\/ Return the path to the temporary image file\n       return $file;\n   }<\/code><\/pre>\n<p>La fonction <code>test_create_post<\/code> simule un utilisateur qui cr\u00e9e un nouvel article en effectuant une requ\u00eate <code>POST<\/code> vers la route <code>posts.store<\/code> avec des attributs sp\u00e9cifiques, notamment une image fictive g\u00e9n\u00e9r\u00e9e \u00e0 l&rsquo;aide de la classe <code>UploadedFile<\/code> de Laravel.<\/p>\n<p>Le test affirme ensuite que le code a r\u00e9ussi \u00e0 stocker l&rsquo;article dans la base de donn\u00e9es en v\u00e9rifiant le compte de <code>Post::all()<\/code>. Il v\u00e9rifie que le code redirige l&rsquo;utilisateur vers la page Index des articles apr\u00e8s la cr\u00e9ation de l&rsquo;article.<\/p>\n<p>Ce test garantit que la fonctionnalit\u00e9 de cr\u00e9ation d&rsquo;articles fonctionne et que l&rsquo;application g\u00e8re correctement les interactions avec la base de donn\u00e9es et les redirections apr\u00e8s la post-soumission.<\/li>\n<li>Ajoutez les instructions <code>use<\/code> suivantes au m\u00eame fichier :\n<pre><code class=\"language-php\">use App\\Models\\Post;\nuse Illuminate\\Http\\UploadedFile;<\/code><\/pre>\n<\/li>\n<li>Ex\u00e9cutez la commande <code>php artisan config:clear<\/code> pour vider le cache de configuration.<\/li>\n<li>Pour effectuer ce test, ex\u00e9cutez cette commande :\n<pre><code class=\"language-php\">php artisan test tests\/Feature\/PostControllerTest.php<\/code><\/pre>\n<p>Le test doit r\u00e9ussir, et le terminal doit afficher les r\u00e9sultats du test et le temps total d&rsquo;ex\u00e9cution du test.<\/li>\n<\/ol>\n<h2>Confirmer la couverture du test<\/h2>\n<p>La couverture des tests fait r\u00e9f\u00e9rence \u00e0 la part de la base de code que tes tests d&rsquo;unit\u00e9, de fonctionnalit\u00e9 ou de navigateur v\u00e9rifient, exprim\u00e9e en pourcentage. Elle vous aide \u00e0 identifier les zones non test\u00e9es de ta base de code et les zones sous test\u00e9es contenant potentiellement des bogues.<\/p>\n<p>Des outils comme la fonction de couverture du code de PHPUnit et le rapport de couverture int\u00e9gr\u00e9 de Laravel g\u00e9n\u00e8rent des rapports indiquant les parties de votre base de code que vos tests couvrent. Ce processus fournit des informations essentielles sur la qualit\u00e9 de tes tests et vous aide \u00e0 vous concentrer sur les zones qui pourraient n\u00e9cessiter des tests suppl\u00e9mentaires.<\/p>\n<h3>G\u00e9n\u00e9rer un rapport<\/h3>\n<ol start=\"1\">\n<li>Supprimez les fichiers <strong>tests\/Feature\/ExampleTest.php<\/strong> et <strong>tests\/Unit\/ExampleTest.php<\/strong>, car vous ne les avez pas modifi\u00e9s et ils pourraient provoquer des erreurs.<\/li>\n<li>Ex\u00e9cutez la commande <code>php artisan test --coverage<\/code> dans une fen\u00eatre de terminal. Vous devriez recevoir une sortie comme la suivante :\n<figure style=\"width: 1400px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2024\/03\/code-coverage-report.png\" alt=\"Ex\u00e9cution de la commande php artisan test --coverage\" width=\"1400\" height=\"590\"><figcaption class=\"wp-caption-text\">Ex\u00e9cution de la commande php artisan test &#8211;coverage<\/figcaption><\/figure>\n<p>Le rapport de couverture de code montre les r\u00e9sultats des tests, le nombre total de tests r\u00e9ussis et le temps d&rsquo;ex\u00e9cution des r\u00e9sultats. Il r\u00e9pertorie \u00e9galement chaque composant de votre base de code et son pourcentage de couverture du code. Les pourcentages repr\u00e9sentent la proportion du code que vos tests couvrent.<\/p>\n<p>Par exemple, <code>Models\/Post<\/code> a une couverture de 100 %, ce qui signifie que toutes les m\u00e9thodes et lignes de code du mod\u00e8le sont couvertes. Le rapport sur la couverture du code affiche \u00e9galement la <strong>couverture totale<\/strong> &#8211; la couverture globale du code pour l&rsquo;ensemble de la base de code. Dans ce cas, les tests ne couvrent que <strong>65,3 %<\/strong> du code.<\/li>\n<li>Pour sp\u00e9cifier un seuil minimum de couverture, ex\u00e9cutez la commande <code>php artisan test --coverage --min=85<\/code>. Cette commande d\u00e9finit un seuil minimum de 85 %. Vous devriez recevoir la sortie suivante :\n<figure style=\"width: 1001px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2024\/03\/coverage-report-with-minimum.png\" alt=\"Test avec un seuil minimum de 85 %.\" width=\"1001\" height=\"471\"><figcaption class=\"wp-caption-text\">Test avec un seuil minimum de 85 %.<\/figcaption><\/figure>\n<p>Les suites de tests \u00e9chouent parce que le code n&rsquo;atteint pas le seuil minimum fix\u00e9 de 85 %.<\/p>\n<p>Bien que l&rsquo;objectif soit d&rsquo;atteindre une couverture de code plus \u00e9lev\u00e9e &#8211; souvent 100 % &#8211; il est plus important de tester minutieusement les parties critiques et complexes de votre application.<\/li>\n<\/ol>\n<h2>R\u00e9sum\u00e9<\/h2>\n<p>En adoptant les meilleures pratiques d\u00e9crites dans cet article, telles que la r\u00e9daction de tests significatifs et complets, le respect du cycle red-green-refactor en TDD et l&rsquo;exploitation des fonctionnalit\u00e9s de test fournies par Laravel et PHPUnit, vous pouvez cr\u00e9er des applications robustes et de haute qualit\u00e9.<\/p>\n<p>De plus, vous avez la possibilit\u00e9 d&rsquo;<a href=\"https:\/\/sevalla.com\/application-hosting\/\">h\u00e9berger votre application Laravel<\/a> dans l&rsquo;infrastructure rapide, s\u00e9curis\u00e9e et fiable de Kinsta. En outre, vous pouvez utiliser l&rsquo;<a href=\"https:\/\/api-docs.kinsta.com\/tag\/Application-Deployments#operation\/manualDeployApplication\" target=\"_blank\" rel=\"noopener noreferrer\">API de Kinsta<\/a> pour lancer des <a href=\"https:\/\/kinsta.com\/fr\/blog\/configurer-pipeline-ci-cd\/\">d\u00e9ploiements au sein de vos pipelines CI\/CD<\/a> par le biais de plateformes telles que GitHub Actions, <a href=\"https:\/\/kinsta.com\/fr\/blog\/deploiement-continu-react\/\">CircleCI<\/a>, et plus encore.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Les tests unitaires sont essentiels dans le d\u00e9veloppement de logiciels, car ils permettent de s&rsquo;assurer que les composants de votre application fonctionnent comme pr\u00e9vu de mani\u00e8re &#8230;<\/p>\n","protected":false},"author":199,"featured_media":76590,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[992,986],"class_list":["post-76589","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-base-de-donnees-mysql","topic-laravel"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.6 (Yoast SEO v24.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Ne sautez pas les tests unitaires et construisez de meilleures applications Laravel - Kinsta\u00ae<\/title>\n<meta name=\"description\" content=\"Cet article met en lumi\u00e8re l&#039;importance des tests unitaires dans les applications Laravel et \u00e0 quel point ils sont cruciaux dans le d\u00e9veloppement de logiciels.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinsta.com\/fr\/blog\/tests-unitaires-laravel\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Ne sautez pas les tests unitaires et construisez de meilleures applications Laravel\" \/>\n<meta property=\"og:description\" content=\"Cet article met en lumi\u00e8re l&#039;importance des tests unitaires dans les applications Laravel et \u00e0 quel point ils sont cruciaux dans le d\u00e9veloppement de logiciels.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/fr\/blog\/tests-unitaires-laravel\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinstafrance\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-03-19T08:24:19+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-03-21T10:05:11+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2024\/03\/laravel-unit-testing.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1460\" \/>\n\t<meta property=\"og:image:height\" content=\"730\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Jeremy Holcombe\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"Cet article met en lumi\u00e8re l&#039;importance des tests unitaires dans les applications Laravel et \u00e0 quel point ils sont cruciaux dans le d\u00e9veloppement de logiciels.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2024\/03\/laravel-unit-testing.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@kinsta_fr\" \/>\n<meta name=\"twitter:site\" content=\"@kinsta_fr\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jeremy Holcombe\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"15 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/tests-unitaires-laravel\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/tests-unitaires-laravel\/\"},\"author\":{\"name\":\"Jeremy Holcombe\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21\"},\"headline\":\"Ne sautez pas les tests unitaires et construisez de meilleures applications Laravel\",\"datePublished\":\"2024-03-19T08:24:19+00:00\",\"dateModified\":\"2024-03-21T10:05:11+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/tests-unitaires-laravel\/\"},\"wordCount\":3287,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/tests-unitaires-laravel\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2024\/03\/laravel-unit-testing.jpg\",\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/fr\/blog\/tests-unitaires-laravel\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/tests-unitaires-laravel\/\",\"url\":\"https:\/\/kinsta.com\/fr\/blog\/tests-unitaires-laravel\/\",\"name\":\"Ne sautez pas les tests unitaires et construisez de meilleures applications Laravel - Kinsta\u00ae\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/tests-unitaires-laravel\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/tests-unitaires-laravel\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2024\/03\/laravel-unit-testing.jpg\",\"datePublished\":\"2024-03-19T08:24:19+00:00\",\"dateModified\":\"2024-03-21T10:05:11+00:00\",\"description\":\"Cet article met en lumi\u00e8re l'importance des tests unitaires dans les applications Laravel et \u00e0 quel point ils sont cruciaux dans le d\u00e9veloppement de logiciels.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/tests-unitaires-laravel\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/fr\/blog\/tests-unitaires-laravel\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/tests-unitaires-laravel\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2024\/03\/laravel-unit-testing.jpg\",\"contentUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2024\/03\/laravel-unit-testing.jpg\",\"width\":1460,\"height\":730},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/tests-unitaires-laravel\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/fr\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Laravel\",\"item\":\"https:\/\/kinsta.com\/fr\/sujets\/laravel\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Ne sautez pas les tests unitaires et construisez de meilleures applications Laravel\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/fr\/#website\",\"url\":\"https:\/\/kinsta.com\/fr\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Solutions d&#039;h\u00e9bergement premium, rapides et s\u00e9curis\u00e9es\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/fr\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/fr\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/fr\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinstafrance\/\",\"https:\/\/x.com\/kinsta_fr\",\"https:\/\/www.instagram.com\/kinstahosting\/\",\"https:\/\/www.linkedin.com\/company\/kinsta\/\",\"https:\/\/www.pinterest.com\/kinstahosting\/\",\"https:\/\/www.youtube.com\/c\/Kinsta\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21\",\"name\":\"Jeremy Holcombe\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/0e17001f3bb37dbbe54fceef9bb547fa?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/0e17001f3bb37dbbe54fceef9bb547fa?s=96&d=mm&r=g\",\"caption\":\"Jeremy Holcombe\"},\"description\":\"Senior Editor at Kinsta, WordPress Web Developer, and Content Writer. Outside of all things WordPress, I enjoy the beach, golf, and movies. I also have tall people problems.\",\"sameAs\":[\"https:\/\/www.linkedin.com\/in\/jeremyholcombe\/\"],\"url\":\"https:\/\/kinsta.com\/fr\/blog\/author\/jeremyholcombe\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Ne sautez pas les tests unitaires et construisez de meilleures applications Laravel - Kinsta\u00ae","description":"Cet article met en lumi\u00e8re l'importance des tests unitaires dans les applications Laravel et \u00e0 quel point ils sont cruciaux dans le d\u00e9veloppement de logiciels.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kinsta.com\/fr\/blog\/tests-unitaires-laravel\/","og_locale":"fr_FR","og_type":"article","og_title":"Ne sautez pas les tests unitaires et construisez de meilleures applications Laravel","og_description":"Cet article met en lumi\u00e8re l'importance des tests unitaires dans les applications Laravel et \u00e0 quel point ils sont cruciaux dans le d\u00e9veloppement de logiciels.","og_url":"https:\/\/kinsta.com\/fr\/blog\/tests-unitaires-laravel\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinstafrance\/","article_published_time":"2024-03-19T08:24:19+00:00","article_modified_time":"2024-03-21T10:05:11+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2024\/03\/laravel-unit-testing.jpg","type":"image\/jpeg"}],"author":"Jeremy Holcombe","twitter_card":"summary_large_image","twitter_description":"Cet article met en lumi\u00e8re l'importance des tests unitaires dans les applications Laravel et \u00e0 quel point ils sont cruciaux dans le d\u00e9veloppement de logiciels.","twitter_image":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2024\/03\/laravel-unit-testing.jpg","twitter_creator":"@kinsta_fr","twitter_site":"@kinsta_fr","twitter_misc":{"\u00c9crit par":"Jeremy Holcombe","Dur\u00e9e de lecture estim\u00e9e":"15 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/fr\/blog\/tests-unitaires-laravel\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/fr\/blog\/tests-unitaires-laravel\/"},"author":{"name":"Jeremy Holcombe","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21"},"headline":"Ne sautez pas les tests unitaires et construisez de meilleures applications Laravel","datePublished":"2024-03-19T08:24:19+00:00","dateModified":"2024-03-21T10:05:11+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/fr\/blog\/tests-unitaires-laravel\/"},"wordCount":3287,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/fr\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/fr\/blog\/tests-unitaires-laravel\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2024\/03\/laravel-unit-testing.jpg","inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/fr\/blog\/tests-unitaires-laravel\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/fr\/blog\/tests-unitaires-laravel\/","url":"https:\/\/kinsta.com\/fr\/blog\/tests-unitaires-laravel\/","name":"Ne sautez pas les tests unitaires et construisez de meilleures applications Laravel - Kinsta\u00ae","isPartOf":{"@id":"https:\/\/kinsta.com\/fr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/fr\/blog\/tests-unitaires-laravel\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/fr\/blog\/tests-unitaires-laravel\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2024\/03\/laravel-unit-testing.jpg","datePublished":"2024-03-19T08:24:19+00:00","dateModified":"2024-03-21T10:05:11+00:00","description":"Cet article met en lumi\u00e8re l'importance des tests unitaires dans les applications Laravel et \u00e0 quel point ils sont cruciaux dans le d\u00e9veloppement de logiciels.","breadcrumb":{"@id":"https:\/\/kinsta.com\/fr\/blog\/tests-unitaires-laravel\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/fr\/blog\/tests-unitaires-laravel\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinsta.com\/fr\/blog\/tests-unitaires-laravel\/#primaryimage","url":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2024\/03\/laravel-unit-testing.jpg","contentUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2024\/03\/laravel-unit-testing.jpg","width":1460,"height":730},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/fr\/blog\/tests-unitaires-laravel\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/fr\/"},{"@type":"ListItem","position":2,"name":"Laravel","item":"https:\/\/kinsta.com\/fr\/sujets\/laravel\/"},{"@type":"ListItem","position":3,"name":"Ne sautez pas les tests unitaires et construisez de meilleures applications Laravel"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/fr\/#website","url":"https:\/\/kinsta.com\/fr\/","name":"Kinsta\u00ae","description":"Solutions d&#039;h\u00e9bergement premium, rapides et s\u00e9curis\u00e9es","publisher":{"@id":"https:\/\/kinsta.com\/fr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/fr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/fr\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/fr\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinstafrance\/","https:\/\/x.com\/kinsta_fr","https:\/\/www.instagram.com\/kinstahosting\/","https:\/\/www.linkedin.com\/company\/kinsta\/","https:\/\/www.pinterest.com\/kinstahosting\/","https:\/\/www.youtube.com\/c\/Kinsta"]},{"@type":"Person","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21","name":"Jeremy Holcombe","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/0e17001f3bb37dbbe54fceef9bb547fa?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/0e17001f3bb37dbbe54fceef9bb547fa?s=96&d=mm&r=g","caption":"Jeremy Holcombe"},"description":"Senior Editor at Kinsta, WordPress Web Developer, and Content Writer. Outside of all things WordPress, I enjoy the beach, golf, and movies. I also have tall people problems.","sameAs":["https:\/\/www.linkedin.com\/in\/jeremyholcombe\/"],"url":"https:\/\/kinsta.com\/fr\/blog\/author\/jeremyholcombe\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/76589","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/users\/199"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/comments?post=76589"}],"version-history":[{"count":5,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/76589\/revisions"}],"predecessor-version":[{"id":76607,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/76589\/revisions\/76607"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/76589\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/76589\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/76589\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/76589\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/76589\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/76589\/translations\/jp"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/76589\/translations\/nl"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/76589\/translations\/es"},{"href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/76589\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/media\/76590"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/media?parent=76589"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/tags?post=76589"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/topic?post=76589"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}