{"id":69528,"date":"2024-03-19T09:23:18","date_gmt":"2024-03-19T08:23:18","guid":{"rendered":"https:\/\/kinsta.com\/de\/?p=69528&#038;preview=true&#038;preview_id=69528"},"modified":"2024-03-22T10:01:19","modified_gmt":"2024-03-22T09:01:19","slug":"laravel-unit-testing","status":"publish","type":"post","link":"https:\/\/kinsta.com\/de\/blog\/laravel-unit-testing\/","title":{"rendered":"Lasse Unit-Tests nicht aus und entwickle somit bessere Laravel-Anwendungen"},"content":{"rendered":"<p>Unit-Tests sind bei der Softwareentwicklung von entscheidender Bedeutung. Sie stellen sicher, dass die Komponenten deiner Anwendung isoliert voneinander wie erwartet funktionieren. Indem du Tests f\u00fcr bestimmte Codeeinheiten schreibst, kannst du Fehler fr\u00fch in der Entwicklung erkennen und beheben, was zu einer zuverl\u00e4ssigeren und stabileren Software f\u00fchrt.<\/p>\n<p>In einer CI\/CD-Pipeline (Continuous Integration\/Continuous Delivery) kannst du diese Tests automatisch ausf\u00fchren lassen, nachdem du \u00c4nderungen an der Codebasis vorgenommen hast. So wird sichergestellt, dass der neue Code keine Fehler enth\u00e4lt oder bestehende Funktionen besch\u00e4digt.<\/p>\n<p>Dieser Artikel zeigt, wie wichtig Unit-Tests in <a href=\"https:\/\/kinsta.com\/de\/blog\/laravel-installieren\/\">Laravel-Anwendungen<\/a> sind. Er beschreibt, wie du Unit-Tests f\u00fcr eine Laravel-Anwendung schreibst, die \u00fcber den <a href=\"https:\/\/sevalla.com\/application-hosting\/\">Anwendungs-Hosting-Dienst<\/a> von Kinsta bereitgestellt wird.<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>Einf\u00fchrung in PHPUnit<\/h2>\n<p><a href=\"https:\/\/kinsta.com\/de\/blog\/php-test-tools\/#2-phpunit\">PHPUnit<\/a> ist ein weit verbreitetes Testframework im PHP-\u00d6kosystem, das f\u00fcr Unit-Tests entwickelt wurde. Es verf\u00fcgt \u00fcber eine Reihe von robusten Tools zum Erstellen und Ausf\u00fchren von Tests und ist damit eine wichtige Ressource, um die Zuverl\u00e4ssigkeit und Qualit\u00e4t deiner Codebasis sicherzustellen.<\/p>\n<p><a href=\"https:\/\/laravel.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">Laravel<\/a> unterst\u00fctzt das Testen mit <a href=\"https:\/\/phpunit.readthedocs.io\/\" target=\"_blank\" rel=\"noopener noreferrer\">PHPUnit<\/a> und wird mit praktischen Hilfsmethoden geliefert, mit denen du deine Anwendung testen kannst.<\/p>\n<p>Die Einrichtung von PHPUnit in einem Laravel-Projekt erfordert nur eine minimale Konfiguration. Laravel bietet eine vorkonfigurierte Testumgebung, einschlie\u00dflich einer <strong>phpunit.xml-Datei<\/strong> und einem eigenen <strong>Testverzeichnis <\/strong>f\u00fcr deine Testdateien.<\/p>\n<p>Alternativ kannst du die <strong>phpunit.xml-Datei<\/strong> anpassen, um eigene Optionen f\u00fcr eine ma\u00dfgeschneiderte Testumgebung zu definieren. Anstelle der <strong>.<\/strong> <strong>env-Datei <\/strong>kannst du auch eine <strong>.env.testing-Umgebungsdatei <\/strong>im Stammordner des Projekts erstellen.<\/p>\n<h2>Standard-Testlayout in Laravel<\/h2>\n<p><a href=\"https:\/\/kinsta.com\/de\/thema\/laravel\/\">Laravel<\/a> bietet ein strukturiertes Standardverzeichnislayout. Das Hauptverzeichnis deines Laravel-Projekts enth\u00e4lt ein Verzeichnis <strong>tests<\/strong> mit den Unterverzeichnissen <strong>Feature <\/strong>und <strong>Unit <\/strong>. Dieses Layout macht es einfach, verschiedene Testtypen zu trennen und eine saubere und organisierte Testumgebung zu erhalten.<\/p>\n<p>Die Datei <strong>phpunit.xml<\/strong> in einem Laravel-Projekt ist wichtig, um den Testprozess zu steuern, die Konsistenz der Testl\u00e4ufe zu gew\u00e4hrleisten und das Verhalten von PHPUnit an die Projektanforderungen anzupassen. Hier kannst du festlegen, wie die Tests ausgef\u00fchrt werden sollen, einschlie\u00dflich der Definition der Testsuiten, der Festlegung der Testumgebung und der Einrichtung von Datenbankverbindungen.<\/p>\n<p>In dieser Datei wird auch festgelegt, dass Session-, Cache- und E-Mail-Daten auf den Array-Treiber gesetzt werden, um sicherzustellen, dass beim Ausf\u00fchren von Tests keine Daten in Session, Cache oder E-Mail erhalten bleiben.<\/p>\n<aside role=\"note\" class=\"wp-block-kinsta-notice is-style-info\">\n            <h3>Info<\/h3>\n        <p>Der Begriff &#8222;Treiber&#8220; bezieht sich auf eine Konfigurationseinstellung, die diese Daten w\u00e4hrend der Tests in einem Array im Speicher speichert, um die Isolierung aufrechtzuerhalten und zu verhindern, dass die Daten zwischen den Testl\u00e4ufen bestehen bleiben.<\/p>\n<\/aside>\n\n<p>Du kannst mehrere Arten von Tests f\u00fcr deine Laravel-Anwendung durchf\u00fchren:<\/p>\n<ul>\n<li><strong>Unit-Tests &#8211;<\/strong> konzentrieren sich auf einzelne Komponenten deines Codes, z. B. Klassen, Methoden und Funktionen. Diese Tests bleiben von der Laravel-Anwendung isoliert und \u00fcberpr\u00fcfen, ob bestimmte Codeeinheiten wie erwartet funktionieren. Beachte, dass Tests, die im Verzeichnis <strong>tests\/Unit <\/strong>definiert sind, die Laravel-Anwendung nicht booten, d.h. sie k\u00f6nnen nicht auf die <a href=\"https:\/\/kinsta.com\/database\/\">Datenbank<\/a> oder andere Dienste des Frameworks zugreifen.<\/li>\n<li><strong>Feature-Tests &#8211;<\/strong> \u00fcberpr\u00fcfen die allgemeine Funktionalit\u00e4t deiner Anwendung. Diese Tests simulieren HTTP-Anfragen und -Antworten und erm\u00f6glichen es dir, Routen, Controller und die Integration verschiedener Komponenten zu testen. Mit Funktionstests kannst du sicherstellen, dass die verschiedenen Teile deiner Anwendung wie erwartet zusammenarbeiten.<\/li>\n<li><strong>Browser-Tests &#8211; <\/strong>gehen noch weiter, indem sie Browser-Interaktionen automatisieren. Die Tests verwenden <a href=\"https:\/\/laravel.com\/docs\/10.x\/dusk\" target=\"_blank\" rel=\"noopener noreferrer\">Laravel Dusk<\/a>, ein Browser-Automatisierungs- und Testwerkzeug, um Benutzerinteraktionen zu simulieren, z. B. das Ausf\u00fcllen von Formularen und das Anklicken von Schaltfl\u00e4chen. Browsertests sind wichtig, um das Verhalten deiner Anwendung und das Nutzererlebnis in realen Browsern zu \u00fcberpr\u00fcfen.<\/li>\n<\/ul>\n<h2>Konzepte der testgetriebenen Entwicklung<\/h2>\n<p>Testgetriebene Entwicklung (TDD) ist ein Softwareentwicklungsansatz, bei dem das Testen im Vordergrund steht, bevor der Code implementiert wird. Dieser Ansatz folgt einem Prozess, der als Rot-Gr\u00fcn-Refactor-Zyklus bekannt ist.<\/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=\"Der testgetriebene Entwicklungszyklus zeigt den Rot-Gr\u00fcn-Refactor\" width=\"1001\" height=\"471\"><figcaption class=\"wp-caption-text\">Der testgetriebene Entwicklungszyklus zeigt den Rot-Gr\u00fcn-Refactor<\/figcaption><\/figure>\n<p>Hier ist eine Erkl\u00e4rung dieses Zyklus:<\/p>\n<ul>\n<li><strong>Rote Phase<\/strong> &#8211; Schreibe einen neuen Test, um die Funktionalit\u00e4t zu definieren, oder eine Verbesserung eines bestehenden Tests, bevor du den eigentlichen Code implementierst. Der Test sollte fehlschlagen (was &#8222;rot&#8220; bedeutet), weil es keinen entsprechenden Code gibt, der ihn erfolgreich macht.<\/li>\n<li><strong>Gr\u00fcne Phase<\/strong> &#8211; Schreibe gerade so viel Code, dass der fehlgeschlagene Test bestanden werden kann, sodass er von rot auf gr\u00fcn wechselt. Der Code wird nicht optimal sein, aber er erf\u00fcllt die Anforderungen des entsprechenden Testfalls.<\/li>\n<li><strong>Refactor-Phase<\/strong> &#8211; Refactoriere den Code, um seine Lesbarkeit, Wartbarkeit und Leistung zu verbessern, ohne sein Verhalten zu ver\u00e4ndern. In dieser Phase kannst du bequem \u00c4nderungen am Code vornehmen, ohne dir Sorgen \u00fcber Regressionsprobleme machen zu m\u00fcssen, da die vorhandenen Testf\u00e4lle diese abfangen.<\/li>\n<\/ul>\n<p>TDD hat mehrere Vorteile:<\/p>\n<ul>\n<li><strong>Fr\u00fchzeitiges Erkennen von Fehlern<\/strong> &#8211; TDD hilft, Fehler schon fr\u00fch im Entwicklungsprozess zu erkennen, wodurch die Kosten und der Zeitaufwand f\u00fcr die Behebung von Problemen im sp\u00e4teren Verlauf des Entwicklungszyklus reduziert werden.<\/li>\n<li><strong>Besseres Design<\/strong> &#8211; TDD f\u00f6rdert modularen und lose gekoppelten Code f\u00fcr ein besseres Softwaredesign. Es ermutigt dich, \u00fcber die Schnittstellen und das Zusammenspiel der Komponenten nachzudenken, bevor du sie implementierst.<\/li>\n<li><strong>Vertrauen in das Refactoring<\/strong> &#8211; Du kannst den Code getrost refactorisieren, weil du wei\u00dft, dass die vorhandenen Tests alle Regressionen, die beim Refactoring eingef\u00fchrt werden, schnell identifizieren.<\/li>\n<li><strong>Lebendige Dokumentation<\/strong> &#8211; Testf\u00e4lle dienen als lebendige Dokumentation, indem sie Beispiele daf\u00fcr liefern, wie sich der Code verhalten sollte. Diese Dokumentation ist immer auf dem neuesten Stand, da fehlgeschlagene Tests auf Probleme im Code hinweisen.<\/li>\n<\/ul>\n<p>Bei der Entwicklung von Laravel wendest du die TDD-Prinzipien an, indem du Tests f\u00fcr Komponenten wie Controller, Modelle und Dienste schreibst, bevor du sie implementierst.<\/p>\n<p>Die Testumgebung von Laravel, zu der auch PHPUnit geh\u00f6rt, bietet praktische Methoden und Assertions, um TDD zu erleichtern und sicherzustellen, dass du aussagekr\u00e4ftige Tests erstellen und den Red-Green-Refactor-Zyklus effektiv einhalten kannst.<\/p>\n<h2>Grundlegende Beispiele f\u00fcr Unit-Tests<\/h2>\n<p>In diesem Abschnitt wird erkl\u00e4rt, wie du einen einfachen Test schreibst, um die Funktionalit\u00e4t deines Modells zu \u00fcberpr\u00fcfen.<\/p>\n<h3>Voraussetzungen<\/h3>\n<p>Um mitzumachen, brauchst du Folgendes:<\/p>\n<ul>\n<li>Erf\u00fclle die Voraussetzungen, die im <a href=\"https:\/\/kinsta.com\/de\/blog\/laravel-blog\/#prerequisites\">Laravel-Blog-Leitfaden<\/a> aufgef\u00fchrt sind.<\/li>\n<li>Eine Laravel-Anwendung. Dieses Tutorial verwendet die Anwendung, die in der oben verlinkten Anleitung erstellt wurde. Du kannst sie lesen und die Blog-Anwendung erstellen, aber wenn du nur den Quellcode brauchst, um die Tests zu implementieren, befolge die folgenden Schritte.<\/li>\n<li><a href=\"https:\/\/xdebug.org\/docs\/install\" target=\"_blank\" rel=\"noopener noreferrer\">Xdebug<\/a> ist installiert und mit <a href=\"https:\/\/xdebug.org\/docs\/code_coverage#mode\" target=\"_blank\" rel=\"noopener noreferrer\">aktiviertem Abdeckungsmodus<\/a> konfiguriert.<\/li>\n<\/ul>\n<h3>Richte das Projekt ein<\/h3>\n<ol start=\"1\">\n<li>F\u00fchre diesen Befehl in einem Terminalfenster aus, um das Projekt zu klonen.\n<pre><code class=\"language-bash\">git clone https:\/\/github.com\/VirtuaCreative\/kinsta-laravel-blog.git<\/code><\/pre>\n<\/li>\n<li>Wechsle in den Projektordner und f\u00fchre den Befehl <code>composer install<\/code> aus, um die Projektabh\u00e4ngigkeiten zu installieren.<\/li>\n<li>Benenne die Datei <strong>env.example<\/strong> in <strong>.env<\/strong> um.<\/li>\n<li>F\u00fchre den Befehl <code>php artisan key:generate<\/code> aus, um einen Anwendungsschl\u00fcssel zu generieren.<\/li>\n<\/ol>\n<h3>Tests erstellen und ausf\u00fchren<\/h3>\n<p>Stelle zun\u00e4chst sicher, dass du den Projektcode auf deinem Rechner hast. Das Modell, das du testen wirst, ist das Modell <code>Post<\/code>, das in der Datei <strong>app\/Http\/Models\/Post.php<\/strong> definiert ist. Dieses Modell umfasst mehrere ausf\u00fcllbare Attribute, wie <code>title<\/code>, <code>description<\/code> und <code>image<\/code>.<\/p>\n<p>Deine Aufgabe besteht darin, einfache Unit-Tests f\u00fcr dieses Modell zu erstellen. Ein Test pr\u00fcft, ob die Attribute richtig gesetzt sind, w\u00e4hrend ein anderer die Massenzuweisung pr\u00fcft, indem er versucht, ein nicht ausf\u00fcllbares Attribut zuzuweisen.<\/p>\n<ol start=\"1\">\n<li>F\u00fchre den Befehl <code>php artisan make:test PostModelFunctionalityTest --unit<\/code> aus, um einen neuen Testfall zu erstellen. Die Option <code>--unit<\/code> legt fest, dass es sich um einen Unit-Test handelt und speichert ihn im Verzeichnis <strong>tests\/Unit <\/strong>.<\/li>\n<li>\u00d6ffne die Datei <strong>tests\/Unit\/PostModelFunctionalityTest.php <\/strong>und ersetze die Funktion <code>test_example<\/code> durch diesen 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>Dieser Code definiert zwei Testmethoden.<\/p>\n<p>Die erste erstellt eine Instanz von <code>Post<\/code> mit den angegebenen Attributen und \u00fcberpr\u00fcft mit der Assertion-Methode <code>assertEquals<\/code>, ob du die Attribute <code>title<\/code>, <code>description<\/code> und <code>image<\/code> richtig gesetzt hast.<\/p>\n<p>Die zweite Methode versucht, eine <code>Post<\/code> Instanz mit einem zus\u00e4tzlichen, nicht ausf\u00fcllbaren Attribut (<code>author<\/code>) zu erstellen und best\u00e4tigt mit der <code>assertArrayNotHasKey<\/code> Assertion-Methode, dass dieses Attribut in der Modellinstanz nicht gesetzt ist.<\/li>\n<li>Stelle sicher, dass du die folgende <code>use<\/code> Anweisung in der gleichen Datei hinzuf\u00fcgst:\n<pre><code class=\"language-php\">use App\\Models\\Post;<\/code><\/pre>\n<\/li>\n<li>F\u00fchre den Befehl <code>php artisan config:clear<\/code> aus, um den Konfigurationscache zu l\u00f6schen.<\/li>\n<li>Um diese Tests durchzuf\u00fchren, f\u00fchre den folgenden Befehl aus:\n<pre><code class=\"language-php\">php artisan test tests\/Unit\/PostModelFunctionalityTest.php<\/code><\/pre>\n<p>Alle Tests sollten erfolgreich sein und das Terminal sollte die Ergebnisse und die Gesamtzeit f\u00fcr die Ausf\u00fchrung der Tests anzeigen.<\/li>\n<\/ol>\n<h3>Tests debuggen<\/h3>\n<p>Wenn Tests fehlschlagen, kannst du sie mit den folgenden Schritten debuggen:<\/p>\n<ol start=\"1\">\n<li>Sieh dir die Fehlermeldung im Terminal an. Laravel liefert detaillierte Fehlermeldungen, die das Problem genau beschreiben. Lies die Fehlermeldung sorgf\u00e4ltig durch, um zu verstehen, warum der Test fehlgeschlagen ist.<\/li>\n<li>\u00dcberpr\u00fcfe die Tests und den Code, den du testest, um Unstimmigkeiten festzustellen.<\/li>\n<li>Vergewissere dich, dass du die f\u00fcr den Test erforderlichen Daten und Abh\u00e4ngigkeiten richtig eingerichtet hast.<\/li>\n<li>Verwende Debugging-Tools wie die <a href=\"https:\/\/kinsta.com\/de\/blog\/laravel-vs-wordpress\/#helper-functions\">dd()<\/a> -Funktion von Laravel, um Variablen und Daten an bestimmten Stellen deines Testcodes zu \u00fcberpr\u00fcfen.<\/li>\n<li>Sobald du das Problem erkannt hast, nimmst du die notwendigen \u00c4nderungen vor und f\u00fchrst die Tests erneut durch, bis sie erfolgreich sind.<\/li>\n<\/ol>\n<h2>Tests und Datenbanken<\/h2>\n<p>Laravel bietet eine bequeme M\u00f6glichkeit, eine Testumgebung mit einer <a href=\"https:\/\/kinsta.com\/de\/blog\/mysql-vs-sqlite\/\">In-Memory-SQLite-Datenbank<\/a> einzurichten, die schnell ist und keine Daten zwischen den Testl\u00e4ufen speichert. Um die Testdatenbankumgebung zu konfigurieren und Tests zu schreiben, die mit der Datenbank interagieren, befolge die folgenden Schritte:<\/p>\n<ol start=\"1\">\n<li>\u00d6ffne die Datei <strong>phpunit.xml<\/strong> und kommentiere die folgenden Codezeilen:\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>F\u00fchre den Befehl <code>php artisan make:test PostCreationTest --unit<\/code> aus, um einen neuen Testfall zu erstellen.<\/li>\n<li>\u00d6ffne die Datei <strong>tests\/Unit\/PostCreationTest.php <\/strong>und ersetze die Methode <code>test_example<\/code> durch den unten stehenden Code:\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>Stelle sicher, dass du die folgende <code>use<\/code> Anweisung hinzuf\u00fcgst:\n<pre><code class=\"language-php\">use App\\Models\\Post;<\/code><\/pre>\n<p>Derzeit erweitert die Klasse <code>PostCreationTest<\/code> die Basisklasse <code>PHPUnitFrameworkTestCase<\/code>. Die Basisklasse wird \u00fcblicherweise f\u00fcr Unit-Tests verwendet, wenn du direkt mit PHPUnit au\u00dferhalb von Laravel arbeitest oder wenn du Tests f\u00fcr eine Komponente schreibst, die nicht eng mit Laravel gekoppelt ist. Da du jedoch auf die Datenbank zugreifen musst, musst du die Klasse <code>PostCreationTest<\/code> \u00e4ndern, um die Klasse <code>TestsTestCase<\/code> zu erweitern.<\/p>\n<p>Die letztere Klasse passt die Klasse <code>PHPUnitFrameworkTestCase<\/code> an Laravel-Anwendungen an. Sie bietet zus\u00e4tzliche Funktionen und Laravel-spezifische Einstellungen, wie z. B. das Datenbank-Seeding und die Konfiguration der Testumgebung.<\/li>\n<li>Ersetze die Anweisung <code>use PHPUnitFrameworkTestCase;<\/code> durch <code>use TestsTestCase;<\/code>. Vergiss nicht, dass du die Testumgebung so eingestellt hast, dass sie eine In-Memory-SQLite-Datenbank verwendet. Daher musst du die Datenbank migrieren, bevor du die Tests durchf\u00fchrst. Verwende dazu den Trait <code>IlluminateFoundationTestingRefreshDatabase<\/code>. Dieser Trait migriert die Datenbank, wenn das Schema nicht auf dem neuesten Stand ist, und setzt die Datenbank nach jedem Test zur\u00fcck, um sicherzustellen, dass die Daten des vorherigen Tests die nachfolgenden Tests nicht beeintr\u00e4chtigen.<\/li>\n<li>F\u00fcge die folgende Anweisung <code>use<\/code> in die Datei <strong>tests\/Unit\/PostCreationTest.php <\/strong>ein, um diesen Trait in deinen Code einzubinden:\n<pre><code class=\"language-php\">use Illuminate\\Foundation\\Testing\\RefreshDatabase;<\/code><\/pre>\n<\/li>\n<li>Als N\u00e4chstes f\u00fcgst du die folgende Codezeile vor der Methode <code>testPostCreation<\/code> ein:\n<pre><code class=\"language-php\">use RefreshDatabase;<\/code><\/pre>\n<\/li>\n<li>F\u00fchre den Befehl <code>php artisan config:clear<\/code> aus, um den Konfigurationscache zu l\u00f6schen.<\/li>\n<li>Um diesen Test durchzuf\u00fchren, f\u00fchre den folgenden Befehl aus:\n<pre><code class=\"language-php\">php artisan test tests\/Unit\/PostCreationTest.php<\/code><\/pre>\n<p>Die Tests sollten erfolgreich sein und das Terminal sollte die Testergebnisse und die gesamte Testzeit anzeigen.<\/li>\n<\/ol>\n<h2>Funktionstests<\/h2>\n<p>W\u00e4hrend Unit-Tests einzelne Anwendungskomponenten isoliert pr\u00fcfen, \u00fcberpr\u00fcfen Feature-Tests gr\u00f6\u00dfere Teile des Codes, z. B. das Zusammenspiel mehrerer Objekte. Funktionstests sind aus mehreren Gr\u00fcnden wichtig:<\/p>\n<ol start=\"1\">\n<li><strong>End-to-End-Validierung<\/strong> &#8211; Best\u00e4tigt, dass das gesamte Feature nahtlos funktioniert, einschlie\u00dflich der Interaktionen zwischen den verschiedenen Komponenten wie Controllern, Modellen, Ansichten und sogar der Datenbank.<\/li>\n<li><strong>End-to-End-Tests<\/strong> &#8211; Sie decken den gesamten Benutzerfluss von der ersten Anfrage bis zur letzten Antwort ab und k\u00f6nnen so Probleme aufdecken, die bei Unit-Tests m\u00f6glicherweise \u00fcbersehen werden. Diese F\u00e4higkeit macht sie wertvoll f\u00fcr das Testen von User Journeys und komplexen Szenarien.<\/li>\n<li><strong>Sicherstellung des Nutzererlebnisses<\/strong> &#8211; Ahmt die Nutzerinteraktionen nach und hilft dabei, ein konsistentes Nutzererlebnis sicherzustellen und zu pr\u00fcfen, ob die Funktion wie beabsichtigt funktioniert.<\/li>\n<li><strong>Regressionserkennung<\/strong> &#8211; Findet Regressionen und \u00c4nderungen, die den Code aufbrechen, wenn neuer Code eingef\u00fchrt wird. Wenn ein bestehendes Feature in einem Feature-Test fehlschl\u00e4gt, ist das ein Zeichen daf\u00fcr, dass etwas nicht funktioniert.<\/li>\n<\/ol>\n<p>Erstelle nun einen Funktionstest f\u00fcr die <code>PostController<\/code> in der Datei <strong>app\/Http\/Controllers\/PostController.php<\/strong>. Du konzentrierst dich auf die Methode <code>store<\/code>, die Validierung der eingehenden Daten und die Erstellung und Speicherung von Posts in der Datenbank.<\/p>\n<p>Der Test simuliert einen Benutzer, der einen neuen Beitrag \u00fcber eine Weboberfl\u00e4che erstellt. Dabei wird sichergestellt, dass der Code den Beitrag in der Datenbank speichert und den Benutzer nach der Erstellung zur Seite Beitragsindex weiterleitet. Befolge dazu die folgenden Schritte:<\/p>\n<ol start=\"1\">\n<li>F\u00fchre den Befehl <code>php artisan make:test PostControllerTest<\/code> aus, um einen neuen Testfall im Verzeichnis <strong>tests\/Features<\/strong> zu erstellen.<\/li>\n<li>\u00d6ffne die Datei <strong>tests\/Feature\/PostControllerTest.php<\/strong> und ersetze die Methode <code>test_example<\/code> durch diesen 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>Die Funktion <code>test_create_post<\/code> simuliert einen Benutzer, der einen neuen Beitrag erstellt, indem er eine <code>POST<\/code> -Anfrage an die <code>posts.store<\/code> -Route mit bestimmten Attributen stellt, einschlie\u00dflich eines Mock-Images, das mit der Klasse <code>UploadedFile<\/code> von Laravel generiert wurde.<\/p>\n<p>Der Test best\u00e4tigt, dass der Code den Beitrag erfolgreich in der Datenbank gespeichert hat, indem er den Z\u00e4hler von <code>Post::all()<\/code> \u00fcberpr\u00fcft. Er verifiziert, dass der Code den Benutzer nach der Erstellung des Beitrags auf die Beitragsindexseite weiterleitet.<\/p>\n<p>Dieser Test stellt sicher, dass die Beitragserstellung funktioniert und die Anwendung die Datenbankinteraktionen und Weiterleitungen nach der Beitragserstellung korrekt verarbeitet.<\/li>\n<li>F\u00fcge die folgenden <code>use<\/code> Anweisungen in dieselbe Datei ein:\n<pre><code class=\"language-php\">use App\\Models\\Post;\nuse Illuminate\\Http\\UploadedFile;<\/code><\/pre>\n<\/li>\n<li>F\u00fchre den Befehl <code>php artisan config:clear<\/code> aus, um den Konfigurations-Cache zu l\u00f6schen.<\/li>\n<li>Um diesen Test durchzuf\u00fchren, f\u00fchre diesen Befehl aus:\n<pre><code class=\"language-php\">php artisan test tests\/Feature\/PostControllerTest.php<\/code><\/pre>\n<p>Der Test sollte erfolgreich sein und das Terminal sollte die Testergebnisse und die Gesamtzeit f\u00fcr die Durchf\u00fchrung des Tests anzeigen.<\/li>\n<\/ol>\n<h2>Best\u00e4tige die Testabdeckung<\/h2>\n<p>Die Testabdeckung gibt an, wie viel von der Codebasis deine Unit-, Feature- oder Browsertests \u00fcberpr\u00fcfen, ausgedr\u00fcckt in Prozent. Sie hilft dir, ungetestete Bereiche in deiner Codebasis und unzureichend getestete Bereiche zu identifizieren, die m\u00f6glicherweise Fehler enthalten.<\/p>\n<p>Tools wie die Codeabdeckungsfunktion von PHPUnit und der integrierte Abdeckungsbericht von Laravel erstellen Berichte, die zeigen, welche Teile deiner Codebasis von deinen Tests abgedeckt werden. Dieser Prozess liefert wichtige Informationen \u00fcber die Qualit\u00e4t deiner Tests und hilft dir, dich auf Bereiche zu konzentrieren, die zus\u00e4tzliche Tests erfordern.<\/p>\n<h3>Einen Bericht generieren<\/h3>\n<ol start=\"1\">\n<li>L\u00f6sche die Dateien <strong>tests\/Feature\/ExampleTest.php<\/strong> und <strong>tests\/Unit\/ExampleTest.php<\/strong>, da du sie nicht ver\u00e4ndert hast und sie Fehler verursachen k\u00f6nnten.<\/li>\n<li>F\u00fchre den Befehl <code>php artisan test --coverage<\/code> in einem Terminalfenster aus. Du solltest eine Ausgabe wie die folgende erhalten:\n<figure style=\"width: 1001px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2024\/03\/code-coverage-report.png\" alt=\"Bildschirmfoto, das die Ausf\u00fchrung des Befehls php artisan test --coverage zeigt. Es zeigt die Gesamtzahl der Tests, die bestanden wurden, und die Zeit f\u00fcr die Ausf\u00fchrung der Ergebnisse. Er listet au\u00dferdem jede Komponente in deiner Codebasis und ihren prozentualen Anteil an der Codeabdeckung auf.\" width=\"1001\" height=\"471\"><figcaption class=\"wp-caption-text\">Ausf\u00fchren des Befehls php artisan test &#8211;coverage.<\/figcaption><\/figure>\n<p>Der Codeabdeckungsbericht zeigt die Testergebnisse, die Gesamtzahl der bestandenen Tests und die Zeit f\u00fcr die Ausf\u00fchrung der Ergebnisse. Er listet au\u00dferdem jede Komponente deiner Codebasis und ihren prozentualen Anteil an der Codeabdeckung auf. Die Prozentzahlen geben den Anteil des Codes an, den deine Tests abdecken.<\/p>\n<p>Zum Beispiel hat <code>Models\/Post<\/code> eine 100%ige Abdeckung, was bedeutet, dass alle Methoden und Codezeilen des Modells abgedeckt sind. Der Codeabdeckungsbericht zeigt auch die <strong>Gesamtabdeckung<\/strong> an &#8211; die gesamte Codeabdeckung f\u00fcr die gesamte Codebasis. In diesem Fall decken die Tests nur <strong>65,3 %<\/strong> des Codes ab.<\/li>\n<li>Um einen Schwellenwert f\u00fcr die Mindestabdeckung festzulegen, f\u00fchre den Befehl <code>php artisan test --coverage --min=85<\/code> aus. Dieser Befehl legt eine Mindestabdeckung von 85% fest. Du solltest die folgende Ausgabe erhalten:\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=\"Der Bildschirmausschnitt zeigt den Abdeckungsbericht mit einem Mindestschwellenwert von 85%, der besagt, dass der Test nicht bestanden wurde, weil er den Mindestschwellenwert nicht erreicht hat.\" width=\"1001\" height=\"471\"><figcaption class=\"wp-caption-text\">Test mit einer Mindestabdeckung von 85%.<\/figcaption><\/figure>\n<p>Die Testsuiten schlagen fehl, weil der Code den festgelegten Mindestschwellenwert von 85% nicht erreicht.<\/p>\n<p>Obwohl eine h\u00f6here Codeabdeckung &#8211; oft 100% &#8211; das Ziel ist, ist es wichtiger, die kritischen und komplexen Teile deiner Anwendung gr\u00fcndlich zu testen.<\/li>\n<\/ol>\n<h2>Zusammenfassung<\/h2>\n<p>Wenn du dich an die in diesem Artikel beschriebenen Best Practices h\u00e4ltst, wie z. B. das Schreiben aussagekr\u00e4ftiger und umfassender Tests, die Einhaltung des Rot-Gr\u00fcn-Refactor-Zyklus in TDD und die Nutzung der Testfunktionen von Laravel und PHPUnit, kannst du robuste und qualitativ hochwertige Anwendungen erstellen.<\/p>\n<p>Au\u00dferdem hast du die M\u00f6glichkeit, <a href=\"https:\/\/sevalla.com\/application-hosting\/\">deine Laravel-Anwendung<\/a> mit der schnellen, sicheren und zuverl\u00e4ssigen Infrastruktur von Kinsta zu hosten. Au\u00dferdem kannst du die <a href=\"https:\/\/api-docs.kinsta.com\/tag\/Application-Deployments#operation\/manualDeployApplication\" target=\"_blank\" rel=\"noopener noreferrer\">Kinsta-API<\/a> nutzen, um \u00fcber Plattformen wie GitHub Actions, <a href=\"https:\/\/kinsta.com\/de\/blog\/react-continuous-deployment\/\">CircleCI<\/a> und andere <a href=\"https:\/\/kinsta.com\/de\/blog\/ci-cd-pipeline-github-aktionen-erstellen\/\">Deployments innerhalb deiner CI\/CD-Pipelines<\/a> zu initiieren.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Unit-Tests sind bei der Softwareentwicklung von entscheidender Bedeutung. Sie stellen sicher, dass die Komponenten deiner Anwendung isoliert voneinander wie erwartet funktionieren. Indem du Tests f\u00fcr bestimmte &#8230;<\/p>\n","protected":false},"author":199,"featured_media":69529,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[958,1015],"class_list":["post-69528","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-laravel","topic-mysql-datenbank"],"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>Lasse Unit-Tests nicht aus und entwickle somit bessere Laravel-Anwendungen - Kinsta\u00ae<\/title>\n<meta name=\"description\" content=\"Dieser Artikel zeigt, wie wichtig Unit-Tests in Laravel-Anwendungen sind und wie wichtig sie f\u00fcr die Softwareentwicklung sind.\" \/>\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\/de\/blog\/laravel-unit-testing\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Lasse Unit-Tests nicht aus und entwickle somit bessere Laravel-Anwendungen\" \/>\n<meta property=\"og:description\" content=\"Dieser Artikel zeigt, wie wichtig Unit-Tests in Laravel-Anwendungen sind und wie wichtig sie f\u00fcr die Softwareentwicklung sind.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/de\/blog\/laravel-unit-testing\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Kinsta-Deutschland-207459890108303\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-03-19T08:23:18+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-03-22T09:01:19+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/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=\"Dieser Artikel zeigt, wie wichtig Unit-Tests in Laravel-Anwendungen sind und wie wichtig sie f\u00fcr die Softwareentwicklung sind.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2024\/03\/laravel-unit-testing.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@Kinsta_DE\" \/>\n<meta name=\"twitter:site\" content=\"@Kinsta_DE\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jeremy Holcombe\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"13\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/de\/blog\/laravel-unit-testing\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/laravel-unit-testing\/\"},\"author\":{\"name\":\"Jeremy Holcombe\",\"@id\":\"https:\/\/kinsta.com\/de\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21\"},\"headline\":\"Lasse Unit-Tests nicht aus und entwickle somit bessere Laravel-Anwendungen\",\"datePublished\":\"2024-03-19T08:23:18+00:00\",\"dateModified\":\"2024-03-22T09:01:19+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/laravel-unit-testing\/\"},\"wordCount\":2616,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/de\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/laravel-unit-testing\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2024\/03\/laravel-unit-testing.jpg\",\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/de\/blog\/laravel-unit-testing\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/de\/blog\/laravel-unit-testing\/\",\"url\":\"https:\/\/kinsta.com\/de\/blog\/laravel-unit-testing\/\",\"name\":\"Lasse Unit-Tests nicht aus und entwickle somit bessere Laravel-Anwendungen - Kinsta\u00ae\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/de\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/laravel-unit-testing\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/laravel-unit-testing\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2024\/03\/laravel-unit-testing.jpg\",\"datePublished\":\"2024-03-19T08:23:18+00:00\",\"dateModified\":\"2024-03-22T09:01:19+00:00\",\"description\":\"Dieser Artikel zeigt, wie wichtig Unit-Tests in Laravel-Anwendungen sind und wie wichtig sie f\u00fcr die Softwareentwicklung sind.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/laravel-unit-testing\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/de\/blog\/laravel-unit-testing\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/kinsta.com\/de\/blog\/laravel-unit-testing\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2024\/03\/laravel-unit-testing.jpg\",\"contentUrl\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2024\/03\/laravel-unit-testing.jpg\",\"width\":1460,\"height\":730},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/de\/blog\/laravel-unit-testing\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/de\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Laravel\",\"item\":\"https:\/\/kinsta.com\/de\/thema\/laravel\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Lasse Unit-Tests nicht aus und entwickle somit bessere Laravel-Anwendungen\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/de\/#website\",\"url\":\"https:\/\/kinsta.com\/de\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Schnelle, sichere und hochwertige Hosting-L\u00f6sungen\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/de\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/de\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/de\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/de\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/kinsta.com\/de\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/de\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/Kinsta-Deutschland-207459890108303\/\",\"https:\/\/x.com\/Kinsta_DE\",\"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\/de\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21\",\"name\":\"Jeremy Holcombe\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/kinsta.com\/de\/#\/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\/de\/blog\/author\/jeremyholcombe\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Lasse Unit-Tests nicht aus und entwickle somit bessere Laravel-Anwendungen - Kinsta\u00ae","description":"Dieser Artikel zeigt, wie wichtig Unit-Tests in Laravel-Anwendungen sind und wie wichtig sie f\u00fcr die Softwareentwicklung sind.","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\/de\/blog\/laravel-unit-testing\/","og_locale":"de_DE","og_type":"article","og_title":"Lasse Unit-Tests nicht aus und entwickle somit bessere Laravel-Anwendungen","og_description":"Dieser Artikel zeigt, wie wichtig Unit-Tests in Laravel-Anwendungen sind und wie wichtig sie f\u00fcr die Softwareentwicklung sind.","og_url":"https:\/\/kinsta.com\/de\/blog\/laravel-unit-testing\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/Kinsta-Deutschland-207459890108303\/","article_published_time":"2024-03-19T08:23:18+00:00","article_modified_time":"2024-03-22T09:01:19+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2024\/03\/laravel-unit-testing.jpg","type":"image\/jpeg"}],"author":"Jeremy Holcombe","twitter_card":"summary_large_image","twitter_description":"Dieser Artikel zeigt, wie wichtig Unit-Tests in Laravel-Anwendungen sind und wie wichtig sie f\u00fcr die Softwareentwicklung sind.","twitter_image":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2024\/03\/laravel-unit-testing.jpg","twitter_creator":"@Kinsta_DE","twitter_site":"@Kinsta_DE","twitter_misc":{"Verfasst von":"Jeremy Holcombe","Gesch\u00e4tzte Lesezeit":"13\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/de\/blog\/laravel-unit-testing\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/de\/blog\/laravel-unit-testing\/"},"author":{"name":"Jeremy Holcombe","@id":"https:\/\/kinsta.com\/de\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21"},"headline":"Lasse Unit-Tests nicht aus und entwickle somit bessere Laravel-Anwendungen","datePublished":"2024-03-19T08:23:18+00:00","dateModified":"2024-03-22T09:01:19+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/de\/blog\/laravel-unit-testing\/"},"wordCount":2616,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/de\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/de\/blog\/laravel-unit-testing\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2024\/03\/laravel-unit-testing.jpg","inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/de\/blog\/laravel-unit-testing\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/de\/blog\/laravel-unit-testing\/","url":"https:\/\/kinsta.com\/de\/blog\/laravel-unit-testing\/","name":"Lasse Unit-Tests nicht aus und entwickle somit bessere Laravel-Anwendungen - Kinsta\u00ae","isPartOf":{"@id":"https:\/\/kinsta.com\/de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/de\/blog\/laravel-unit-testing\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/de\/blog\/laravel-unit-testing\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2024\/03\/laravel-unit-testing.jpg","datePublished":"2024-03-19T08:23:18+00:00","dateModified":"2024-03-22T09:01:19+00:00","description":"Dieser Artikel zeigt, wie wichtig Unit-Tests in Laravel-Anwendungen sind und wie wichtig sie f\u00fcr die Softwareentwicklung sind.","breadcrumb":{"@id":"https:\/\/kinsta.com\/de\/blog\/laravel-unit-testing\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/de\/blog\/laravel-unit-testing\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/kinsta.com\/de\/blog\/laravel-unit-testing\/#primaryimage","url":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2024\/03\/laravel-unit-testing.jpg","contentUrl":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2024\/03\/laravel-unit-testing.jpg","width":1460,"height":730},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/de\/blog\/laravel-unit-testing\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/de\/"},{"@type":"ListItem","position":2,"name":"Laravel","item":"https:\/\/kinsta.com\/de\/thema\/laravel\/"},{"@type":"ListItem","position":3,"name":"Lasse Unit-Tests nicht aus und entwickle somit bessere Laravel-Anwendungen"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/de\/#website","url":"https:\/\/kinsta.com\/de\/","name":"Kinsta\u00ae","description":"Schnelle, sichere und hochwertige Hosting-L\u00f6sungen","publisher":{"@id":"https:\/\/kinsta.com\/de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/de\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/kinsta.com\/de\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/de\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/Kinsta-Deutschland-207459890108303\/","https:\/\/x.com\/Kinsta_DE","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\/de\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21","name":"Jeremy Holcombe","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/kinsta.com\/de\/#\/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\/de\/blog\/author\/jeremyholcombe\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/posts\/69528","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/users\/199"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/comments?post=69528"}],"version-history":[{"count":6,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/posts\/69528\/revisions"}],"predecessor-version":[{"id":69556,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/posts\/69528\/revisions\/69556"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/69528\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/69528\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/69528\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/69528\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/69528\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/69528\/translations\/jp"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/69528\/translations\/nl"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/69528\/translations\/es"},{"href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/69528\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/media\/69529"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/media?parent=69528"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/tags?post=69528"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/topic?post=69528"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}