{"id":58907,"date":"2024-03-19T09:25:15","date_gmt":"2024-03-19T08:25:15","guid":{"rendered":"https:\/\/kinsta.com\/nl\/?p=58907&#038;preview=true&#038;preview_id=58907"},"modified":"2024-03-22T10:15:37","modified_gmt":"2024-03-22T09:15:37","slug":"laravel-unit-testing","status":"publish","type":"post","link":"https:\/\/kinsta.com\/nl\/blog\/laravel-unit-testing\/","title":{"rendered":"Sla unit testing niet over en bouw zo betere Laravel apps"},"content":{"rendered":"<p>Unit tests zijn cruciaal bij de ontwikkeling van software en zorgen ervoor dat de onderdelen van je applicatie ge\u00efsoleerd werken zoals verwacht. Door tests te schrijven voor specifieke code-eenheden kun je fouten al in een vroeg stadium van de ontwikkeling opsporen en herstellen, wat leidt tot betrouwbaardere en stabielere software.<\/p>\n<p>In een continue integratie\/continue levering (CI\/CD) pijplijn kun je deze tests automatisch uitvoeren nadat je wijzigingen in de code hebt aangebracht. Dit zorgt ervoor dat nieuwe code geen fouten introduceert of bestaande functionaliteit verbreekt.<\/p>\n<p>Dit artikel belicht het belang van unit testen in <a href=\"https:\/\/kinsta.com\/nl\/blog\/laravel-installeren\/\">Laravel applicaties<\/a> en laat zien hoe je unit tests schrijft voor een Laravel applicatie die wordt ingezet met behulp van Kinsta&#8217;s <a href=\"https:\/\/sevalla.com\/application-hosting\/\">Applicatie Hosting dienst<\/a>.<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>Inleiding tot PHPUnit<\/h2>\n<p><a href=\"https:\/\/kinsta.com\/nl\/blog\/php-testtools\/#2-phpunit\">PHPUnit<\/a> is een veelgebruikt framework binnen het PHP ecosysteem dat is ontworpen voor eenheidstesten. Het bevat een robuuste verzameling tools voor het maken en uitvoeren van tests, waardoor het een essenti\u00eble bron is voor het waarborgen van de betrouwbaarheid en kwaliteit van je codebase.<\/p>\n<p><a href=\"https:\/\/laravel.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">Laravel<\/a> ondersteunt testen met <a href=\"https:\/\/phpunit.readthedocs.io\/\" target=\"_blank\" rel=\"noopener noreferrer\">PHPUnit<\/a> en wordt geleverd met handige helper-methoden waarmee je je applicatie kunt testen.<\/p>\n<p>Het instellen van PHPUnit in een Laravel project vereist minimale configuratie. Laravel biedt een vooraf geconfigureerde testomgeving, inclusief een <strong>phpunit.xml<\/strong> bestand en een speciale <strong>testmap <\/strong>voor je testbestanden.<\/p>\n<p>Je kunt ook het <strong>phpunit.xml<\/strong> bestand aanpassen om aangepaste opties te defini\u00ebren voor een testervaring op maat. Je kunt ook een <strong>.env.testing <\/strong>omgevingsbestand maken in de hoofdmap van het project in plaats van het <strong>.env<\/strong> bestand te gebruiken.<\/p>\n<h2>Standaard testlayout in Laravel<\/h2>\n<p><a href=\"https:\/\/kinsta.com\/nl\/onderwerpen\/laravel\/\">Laravel<\/a> biedt een gestructureerde standaard mapindeling. De hoofdmap van je Laravel project bevat een <strong>testmap<\/strong> met de submappen <strong>Feature <\/strong>en <strong>Unit <\/strong>. Deze layout maakt het eenvoudig om verschillende testtypen te scheiden en een schone en georganiseerde testomgeving te onderhouden.<\/p>\n<p>Het <strong>phpunit.xml<\/strong> bestand in een Laravel project is cruciaal voor het orkestreren van het testproces, het verzekeren van consistentie in testruns en het toestaan om het gedrag van PHPUnit aan te passen aan de eisen van het project. Hiermee kun je defini\u00ebren hoe tests moeten worden uitgevoerd, inclusief het defini\u00ebren van de testsuites, het specificeren van de testomgeving en het instellen van databaseverbindingen.<\/p>\n<p>Dit bestand specificeert ook dat de sessie, cache en e-mail moeten worden ingesteld op de array driver, zodat er geen gegevens van de sessie, cache of e-mail blijven bestaan tijdens het uitvoeren van tests.<\/p>\n<aside role=\"note\" class=\"wp-block-kinsta-notice is-style-info\">\n            <h3>Info<\/h3>\n        <p>De term &#8220;driver&#8221; verwijst naar een configuratie-instelling die deze gegevens opslaat in een in-memory array tijdens het testen, waardoor isolatie behouden blijft en het persisteren van gegevens tussen testruns wordt voorkomen.<\/p>\n<\/aside>\n\n<p>Je kunt verschillende soorten testen uitvoeren op je Laravel applicatie:<\/p>\n<ul>\n<li><strong>Unit testen &#8211;<\/strong> richt zich op individuele onderdelen van je code, zoals klassen, methoden en functies. Deze tests blijven ge\u00efsoleerd van de Laravel applicatie en controleren of specifieke code-eenheden werken zoals verwacht. Merk op dat tests die zijn gedefinieerd in de <strong>tests\/Unit <\/strong>directory de Laravel applicatie niet opstarten, wat betekent dat ze geen toegang hebben tot de <a href=\"https:\/\/kinsta.com\/database\/\">database<\/a> of andere services die het framework biedt.<\/li>\n<li><strong>Feature testen &#8211;<\/strong> valideert de bredere functionaliteit van je applicatie. Deze tests simuleren HTTP-verzoeken en reacties, zodat je routes, controllers en de integratie van verschillende componenten kunt testen. Feature tests helpen ervoor te zorgen dat verschillende onderdelen van je applicatie samenwerken zoals verwacht.<\/li>\n<li><strong>Browsertests &#8211; <\/strong>gaan verder door browserinteracties te automatiseren. De tests maken gebruik van <a href=\"https:\/\/laravel.com\/docs\/10.x\/dusk\" target=\"_blank\" rel=\"noopener noreferrer\">Laravel Dusk<\/a>, een browser automatiserings- en testtool, om gebruikersinteracties te simuleren, zoals het invullen van formulieren en het klikken op knoppen. Browsertests zijn cruciaal voor het valideren van het gedrag en de gebruikerservaring van je applicatie in echte browsers.<\/li>\n<\/ul>\n<h2>Test-driven development concepten<\/h2>\n<p>Test-driven development (TDD) is een aanpak voor softwareontwikkeling waarbij de nadruk ligt op testen nog voordat code wordt ge\u00efmplementeerd. Deze aanpak volgt een proces dat bekend staat als de red-green-refactor cyclus.<\/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=\"De testgestuurde ontwikkelingscyclus met red-green-refactor.\" width=\"1001\" height=\"471\"><figcaption class=\"wp-caption-text\">De testgestuurde ontwikkelingscyclus met red-green-refactor.<\/figcaption><\/figure>\n<p>Hier volgt een uitleg van deze cyclus:<\/p>\n<ul>\n<li><strong>Rode fase<\/strong> &#8211; Schrijf een nieuwe test om functionaliteit te defini\u00ebren of een verbetering op een bestaande test voordat je de eigenlijke code implementeert. De test zou moeten falen (zoals &#8220;rood&#8221; aangeeft) omdat er geen overeenkomstige code is om hem te laten slagen.<\/li>\n<li><strong>Groene fase<\/strong> &#8211; Schrijf net genoeg code om de falende test te laten slagen, waardoor deze van rood naar groen gaat. De code zal niet optimaal zijn, maar voldoet wel aan de eisen van de bijbehorende testcase.<\/li>\n<li><strong>Refactorfase<\/strong> &#8211; Refactor de code om de leesbaarheid, onderhoudbaarheid en prestaties te verbeteren zonder het gedrag te veranderen. In deze fase kun je gemakkelijk wijzigingen in de code aanbrengen zonder je zorgen te maken over regressieproblemen, omdat de bestaande testgevallen deze opvangen.<\/li>\n<\/ul>\n<p>TDD heeft verschillende voordelen:<\/p>\n<ul>\n<li><strong>Vroege opsporing van bugs<\/strong> &#8211; TDD helpt bugs vroeg in het ontwikkelproces op te sporen, waardoor de kosten en tijd van het oplossen van problemen later in de ontwikkelcyclus worden beperkt.<\/li>\n<li><strong>Verbeterd ontwerp<\/strong> &#8211; TDD stimuleert modulaire en losjes gekoppelde code voor een beter softwareontwerp. Het moedigt je aan om na te denken over de interface en de interacties tussen componenten voordat je ze implementeert.<\/li>\n<li><strong>Vertrouwen in refactoring<\/strong> &#8211; Je kunt code met vertrouwen refactoren, omdat je weet dat bestaande tests snel regressies identificeren die tijdens het refactoren zijn ge\u00efntroduceerd.<\/li>\n<li><strong>Levende documentatie<\/strong> &#8211; Testgevallen dienen als levende documentatie door voorbeelden te geven van hoe de code zich zou moeten gedragen. Deze documentatie is altijd actueel omdat falende tests wijzen op problemen in de code.<\/li>\n<\/ul>\n<p>Bij de ontwikkeling van Laravel pas je TDD principes toe door tests te schrijven voor componenten zoals controllers, modellen en services voordat je ze implementeert.<\/p>\n<p>De testomgeving van Laravel, waaronder PHPUnit, biedt handige methoden en asserties om TDD te vergemakkelijken, zodat je zinvolle tests kunt maken en de red-green-refactor cyclus effectief kunt volgen.<\/p>\n<h2>Basisvoorbeelden van unit testen<\/h2>\n<p>Deze sectie legt uit hoe je een eenvoudige test schrijft om de functionaliteit van je model te controleren.<\/p>\n<h3>Vereisten<\/h3>\n<p>Om mee te kunnen volgen, heb je het volgende nodig:<\/p>\n<ul>\n<li>Voldoen aan de randvoorwaarden die worden genoemd in de <a href=\"https:\/\/kinsta.com\/nl\/blog\/laravel-blog\/#prerequisites\">Laravel bloggids<\/a>.<\/li>\n<li>Een Laravel applicatie. Deze tutorial gebruikt de applicatie die is gemaakt in de bovenstaande gids. Je kunt het lezen en de blogapplicatie maken, maar als je alleen de broncode nodig hebt om de tests te implementeren, volg dan de stappen hieronder.<\/li>\n<li><a href=\"https:\/\/xdebug.org\/docs\/install\" target=\"_blank\" rel=\"noopener noreferrer\">Xdebug<\/a> ge\u00efnstalleerd en geconfigureerd met <a href=\"https:\/\/xdebug.org\/docs\/code_coverage#mode\" target=\"_blank\" rel=\"noopener noreferrer\">coverage mode ingeschakeld<\/a>.<\/li>\n<\/ul>\n<h3>Stel het project in<\/h3>\n<ol start=\"1\">\n<li>Voer dit commando uit in een terminalvenster om het project te klonen.\n<pre><code class=\"language-bash\">git clone https:\/\/github.com\/VirtuaCreative\/kinsta-laravel-blog.git<\/code><\/pre>\n<\/li>\n<li>Ga naar de projectmap en voer het commando <code>composer install<\/code> uit om de projectdependencies te installeren.<\/li>\n<li>Hernoem het bestand <strong>env.example<\/strong> naar <strong>.env<\/strong>.<\/li>\n<li>Voer het commando <code>php artisan key:generate<\/code> uit om een app key te genereren.<\/li>\n<\/ol>\n<h3>Tests maken en uitvoeren<\/h3>\n<p>Om te beginnen moet je ervoor zorgen dat je de projectcode op je machine hebt staan. Het model dat je gaat testen is het <code>Post<\/code> model gedefinieerd in het <strong>app\/Http\/Models\/Post.php<\/strong> bestand. Dit model bevat verschillende invulbare attributen, zoals <code>title<\/code>, <code>description<\/code>, en <code>image<\/code>.<\/p>\n<p>Jouw taak bestaat uit het maken van eenvoudige unit tests voor dit model. De ene controleert of de attributen goed zijn ingesteld, terwijl de andere de massatoewijzing onderzoekt door te proberen een niet-vulbaar attribuut toe te wijzen.<\/p>\n<ol start=\"1\">\n<li>Voer het commando <code>php artisan make:test PostModelFunctionalityTest --unit<\/code> uit om een nieuwe testcase te maken. De optie <code>--unit<\/code> geeft aan dat dit een unit test is en slaat het op in de map <strong>tests\/Unit <\/strong>.<\/li>\n<li>Open het bestand <strong>tests\/Unit\/PostModelFunctionalityTest.php <\/strong>en vervang de functie <code>test_example<\/code> door deze 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>Deze code definieert twee testmethoden.<\/p>\n<p>De eerste maakt een instantie <code>Post<\/code> met gespecificeerde attributen en met behulp van de <code>assertEquals<\/code> assertiemethode wordt gecontroleerd of je de attributen <code>title<\/code>, <code>description<\/code> en <code>image<\/code> correct hebt ingesteld.<\/p>\n<p>De tweede methode probeert een <code>Post<\/code> instantie te maken met een extra niet-vulbaar attribuut (<code>author<\/code>) en verzekert dat dit attribuut niet is ingesteld op de modelinstantie met behulp van de <code>assertArrayNotHasKey<\/code> assertiemethode.<\/li>\n<li>Zorg ervoor dat je het volgende <code>use<\/code> statement toevoegt in hetzelfde bestand:\n<pre><code class=\"language-php\">use App\\Models\\Post;<\/code><\/pre>\n<\/li>\n<li>Voer het commando <code>php artisan config:clear<\/code> uit om de configuratiecache te wissen.<\/li>\n<li>Voer het volgende commando uit om deze tests uit te voeren:\n<pre><code class=\"language-php\">php artisan test tests\/Unit\/PostModelFunctionalityTest.php<\/code><\/pre>\n<p>Alle tests zouden moeten slagen en de terminal zou de resultaten en de totale tijd om de tests uit te voeren moeten weergeven.<\/li>\n<\/ol>\n<h3>Testen debuggen<\/h3>\n<p>Als tests mislukken, kun je ze debuggen door de volgende stappen te volgen:<\/p>\n<ol start=\"1\">\n<li>Bekijk de foutmelding in de terminal. Laravel geeft gedetailleerde foutmeldingen die het probleem precies aangeven. Lees de foutmelding zorgvuldig om te begrijpen waarom de test is mislukt.<\/li>\n<li>Inspecteer de tests en code die je aan het testen bent om afwijkingen op te sporen.<\/li>\n<li>Zorg ervoor dat je de gegevens en dependencies die nodig zijn voor de test goed hebt ingesteld.<\/li>\n<li>Gebruik debugging tools zoals Laravel&#8217;s <a href=\"https:\/\/kinsta.com\/nl\/blog\/laravel-vs-wordpress\/#helper-functions\">dd()<\/a> functie om variabelen en gegevens op specifieke punten in je testcode te inspecteren.<\/li>\n<li>Als je het probleem hebt ge\u00efdentificeerd, breng dan de nodige wijzigingen aan en voer de tests opnieuw uit tot ze slagen.<\/li>\n<\/ol>\n<h2>Tests en databases<\/h2>\n<p>Laravel biedt een handige manier om een testomgeving op te zetten met behulp van een in-memory <a href=\"https:\/\/kinsta.com\/nl\/blog\/sqlite-vs-mysql\/\">SQLite database<\/a>, die snel is en geen gegevens opslaat tussen testruns. Volg de onderstaande stappen om de testdatabase te configureren en tests te schrijven die communiceren met de database:<\/p>\n<ol start=\"1\">\n<li>Open het <strong>phpunit.xml<\/strong> bestand en verwijder het commentaar van de volgende regels code:\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>Voer het commando <code>php artisan make:test PostCreationTest --unit<\/code> uit om een nieuwe testcase aan te maken.<\/li>\n<li>Open het bestand <strong>tests\/Unit\/PostCreationTest.php <\/strong>en vervang de methode <code>test_example<\/code> door onderstaande 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>Zorg ervoor dat je het volgende <code>use<\/code> statement toevoegt:\n<pre><code class=\"language-php\">use App\\Models\\Post;<\/code><\/pre>\n<p>Momenteel breidt de klasse <code>PostCreationTest<\/code> de basisklasse <code>PHPUnitFrameworkTestCase<\/code> uit. De basisklasse wordt vaak gebruikt voor unit tests als je rechtstreeks met PHPUnit werkt, buiten Laravel, of als je tests schrijft voor een component die niet nauw gekoppeld is met Laravel. Je moet echter toegang hebben tot de database, wat betekent dat je de klasse <code>PostCreationTest<\/code> moet aanpassen om de klasse <code>TestsTestCase<\/code> uit te breiden.<\/p>\n<p>Deze laatste klasse past de <code>PHPUnitFrameworkTestCase<\/code> klasse aan op Laravel toepassingen. Het biedt extra functionaliteit en Laravel-specifieke instellingen, zoals database seeding en testomgeving configuratie.<\/li>\n<li>Zorg ervoor dat je het <code>use PHPUnitFrameworkTestCase;<\/code> statement vervangt door <code>use TestsTestCase;<\/code>. Vergeet niet dat je de testomgeving hebt ingesteld om een in-memory SQLite database te gebruiken. Je moet de database dus migreren voordat je de tests uitvoert. Gebruik hiervoor de property <code>IlluminateFoundationTestingRefreshDatabase<\/code>. Deze property migreert de database als het schema niet up-to-date is en reset de database na elke test om ervoor te zorgen dat de gegevens van de vorige test niet interfereren met volgende tests.<\/li>\n<li>Voeg het volgende <code>use<\/code> statement toe aan het bestand <strong>tests\/Unit\/PostCreationTest.php <\/strong>om deze property in je code op te nemen:\n<pre><code class=\"language-php\">use Illuminate\\Foundation\\Testing\\RefreshDatabase;<\/code><\/pre>\n<\/li>\n<li>Voeg vervolgens de volgende regel code toe net voor de methode <code>testPostCreation<\/code>:\n<pre><code class=\"language-php\">use RefreshDatabase;<\/code><\/pre>\n<\/li>\n<li>Voer de opdracht <code>php artisan config:clear<\/code> uit om de configuratiecache te wissen.<\/li>\n<li>Voer het volgende commando uit om deze test uit te voeren:\n<pre><code class=\"language-php\">php artisan test tests\/Unit\/PostCreationTest.php<\/code><\/pre>\n<p>De tests moeten slagen en de terminal moet de testresultaten en de totale testtijd weergeven.<\/li>\n<\/ol>\n<h2>Feature testen<\/h2>\n<p>Terwijl unit tests individuele applicatiecomponenten in isolatie controleren, controleren feature tests grotere delen van de code, zoals hoe verschillende objecten op elkaar inwerken. Feature testen is om verschillende redenen van vitaal belang:<\/p>\n<ol start=\"1\">\n<li><strong>End-to-end validatie<\/strong> &#8211; Bevestigt dat de hele functie naadloos werkt, inclusief de interacties tussen verschillende componenten zoals controllers, modellen, views en zelfs de database.<\/li>\n<li><strong>End-to-end testen<\/strong> &#8211; Omvat de volledige gebruikersstroom van het eerste verzoek tot de uiteindelijke reactie, wat problemen aan het licht kan brengen die unit tests misschien over het hoofd zien. Deze mogelijkheid maakt ze waardevol voor het testen van user journeys en complexe scenario&#8217;s.<\/li>\n<li><strong>Garanderen van gebruikerservaring<\/strong> &#8211; Bootst gebruikersinteracties na, helpt bij het controleren van een consistente gebruikerservaring en of de functie werkt zoals bedoeld.<\/li>\n<li><strong>Regressiedetectie<\/strong> &#8211; Vangt regressies en niet-werkende veranderingen op bij het introduceren van nieuwe code. Als een bestaande feature begint te falen in een functietest, geeft dit aan dat er iets kapot is gegaan.<\/li>\n<\/ol>\n<p>Maak nu een feature test voor de <code>PostController<\/code> in het bestand <strong>app\/Http\/Controllers\/PostController.php<\/strong>. Je richt je op de methode <code>store<\/code>, die de binnenkomende gegevens valideert en berichten aanmaakt en opslaat in de database.<\/p>\n<p>De test simuleert een gebruiker die een nieuw bericht aanmaakt via een webinterface en zorgt ervoor dat de code het bericht opslaat in de database en de gebruiker na het aanmaken doorverwijst naar de pagina Posts Index. Volg hiervoor deze stappen:<\/p>\n<ol start=\"1\">\n<li>Voer het commando <code>php artisan make:test PostControllerTest<\/code> uit om een nieuwe testcase aan te maken in de map <strong>tests\/Features<\/strong>.<\/li>\n<li>Open het bestand <strong>tests\/Feature\/PostControllerTest.php<\/strong> en vervang de methode <code>test_example<\/code> door deze 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>De <code>test_create_post<\/code> functie simuleert een gebruiker die een nieuwe post maakt door een <code>POST<\/code> verzoek te doen aan de <code>posts.store<\/code> route met specifieke attributen, inclusief een mock afbeelding die is gegenereerd met behulp van Laravel&#8217;s <code>UploadedFile<\/code> klasse.<\/p>\n<p>De test bevestigt vervolgens dat de code het bericht met succes heeft opgeslagen in de database door de telling van <code>Post::all()<\/code> te controleren. Er wordt gecontroleerd of de code de gebruiker doorverwijst naar de pagina Posts Index na het maken van een bericht.<\/p>\n<p>Deze test zorgt ervoor dat de functionaliteit voor het aanmaken van berichten werkt en dat de applicatie de database-interacties en omleidingen na het indienen van berichten correct afhandelt.<\/li>\n<li>Voeg de volgende <code>use<\/code> verklaringen toe aan hetzelfde bestand:\n<pre><code class=\"language-php\">use App\\Models\\Post;\nuse Illuminate\\Http\\UploadedFile;<\/code><\/pre>\n<\/li>\n<li>Voer de opdracht <code>php artisan config:clear<\/code> uit om de configuratiecache te wissen.<\/li>\n<li>Voer deze opdracht uit om deze test uit te voeren:\n<pre><code class=\"language-php\">php artisan test tests\/Feature\/PostControllerTest.php<\/code><\/pre>\n<p>De test zou moeten slagen en de terminal zou de testresultaten en de totale tijd om de test uit te voeren moeten tonen.<\/li>\n<\/ol>\n<h2>Testdekking bevestigen<\/h2>\n<p>Testdekking verwijst naar hoeveel van de codebase je unit-, feature- of browsertests controleren, uitgedrukt als percentage. Het helpt je bij het identificeren van niet-geteste gebieden in je codebase en de niet-geteste gebieden die mogelijk bugs bevatten.<\/p>\n<p>Tools zoals PHPUnit&#8217;s code coverage functie en Laravel&#8217;s ingebouwde coverage rapport genereren rapporten die laten zien welke delen van je codebase door je tests worden gecontroleerd. Dit proces geeft belangrijke informatie over de kwaliteit van je tests en helpt je te focussen op gebieden die mogelijk extra getest moeten worden.<\/p>\n<h3>Een rapport genereren<\/h3>\n<ol start=\"1\">\n<li>Verwijder de bestanden <strong>tests\/Feature\/ExampleTest.php<\/strong> en <strong>tests\/Unit\/ExampleTest.php<\/strong>, omdat je ze niet hebt gewijzigd en ze fouten kunnen veroorzaken.<\/li>\n<li>Voer het commando <code>php artisan test --coverage<\/code> uit in een terminalvenster. Je zou een uitvoer moeten krijgen zoals hieronder:\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=\"Schermopname van de uitvoering van het commando php artisan test --coverage. Het toont het totale aantal testen dat geslaagd is en de tijd die nodig was om de resultaten uit te voeren. Het toont ook elk onderdeel in je codebase en het code coverage percentage.\" width=\"1001\" height=\"471\"><figcaption class=\"wp-caption-text\">Het uitvoeren van de opdracht php artisan test &#8211;coverage.<\/figcaption><\/figure>\n<p>Het code coverage rapport toont de testresultaten, het totaal aantal testen dat is geslaagd en de tijd om de resultaten uit te voeren. Het toont ook elk onderdeel in je codebase en het code coverage percentage. De percentages geven aan welk deel van de code je tests dekken.<\/p>\n<p>Bijvoorbeeld, <code>Models\/Post<\/code> heeft 100% dekking, wat betekent dat alle methoden en regels code van het model zijn gedekt. Het rapport voor codedekking toont ook de <strong>Total coverage<\/strong>&#8211; de totale codedekking voor de hele codebase. In dit geval dekken de tests slechts <strong>65,3%<\/strong> van de code.<\/li>\n<li>Voer het commando <code>php artisan test --coverage --min=85<\/code> uit om een minimale dekkingsdrempel op te geven. Deze opdracht stelt een minimale drempel van 85% in. Je zou de volgende uitvoer moeten krijgen:\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=\"Schermafbeelding van het dekkingsrapport met een minimumdrempel van 85%. De onderste regel geeft aan dat de test mislukt omdat hij de minimumdrempel niet haalt.\" width=\"1001\" height=\"471\"><figcaption class=\"wp-caption-text\">Test met een minimum drempel van 85%.<\/figcaption><\/figure>\n<p>De testsuites mislukken omdat de code niet voldoet aan de ingestelde minimumdrempel van 85%.<\/p>\n<p>Hoewel het bereiken van een hogere codedekking &#8211; vaak 100% &#8211; het doel is, is het belangrijker om de kritieke en complexe onderdelen van je applicatie grondig te testen.<\/li>\n<\/ol>\n<h2>Samenvatting<\/h2>\n<p>Door de in dit artikel beschreven best practices te omarmen, zoals het schrijven van zinvolle en uitgebreide tests, het volgen van de rood-groen-refactor cyclus in TDD en het benutten van de testfuncties van Laravel en PHPUnit, kun je robuuste applicaties van hoge kwaliteit maken.<\/p>\n<p>Bovendien heb je de optie om <a href=\"https:\/\/sevalla.com\/application-hosting\/\">je Laravel applicatie te hosten<\/a> met de snelle, veilige en betrouwbare infrastructuur van Kinsta. Bovendien kun je de <a href=\"https:\/\/api-docs.kinsta.com\/tag\/Application-Deployments#operation\/manualDeployApplication\" target=\"_blank\" rel=\"noopener noreferrer\">Kinsta API<\/a> gebruiken om deployments te starten <a href=\"https:\/\/kinsta.com\/nl\/blog\/ci-cd-pipeline-maken\/\">binnen je CI\/CD pijplijnen<\/a> via platforms zoals GitHub Actions, <a href=\"https:\/\/kinsta.com\/nl\/blog\/react-continuous-deployment\/\">CircleCI<\/a> en meer.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Unit tests zijn cruciaal bij de ontwikkeling van software en zorgen ervoor dat de onderdelen van je applicatie ge\u00efsoleerd werken zoals verwacht. Door tests te schrijven &#8230;<\/p>\n","protected":false},"author":199,"featured_media":58908,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[866,858],"class_list":["post-58907","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-laravel","topic-mysql-database"],"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>Sla unit testing niet over en bouw zo betere Laravel apps - Kinsta\u00ae<\/title>\n<meta name=\"description\" content=\"Dit artikel belicht het belang van unit testen in Laravel applicaties en hoe cruciaal dit is bij softwareontwikkeling.\" \/>\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\/nl\/blog\/laravel-unit-testing\/\" \/>\n<meta property=\"og:locale\" content=\"nl_NL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Sla unit testing niet over en bouw zo betere Laravel apps\" \/>\n<meta property=\"og:description\" content=\"Dit artikel belicht het belang van unit testen in Laravel applicaties en hoe cruciaal dit is bij softwareontwikkeling.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/nl\/blog\/laravel-unit-testing\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Kinsta-Nederland-476213452787823\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-03-19T08:25:15+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-03-22T09:15:37+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/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=\"Dit artikel belicht het belang van unit testen in Laravel applicaties en hoe cruciaal dit is bij softwareontwikkeling.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2024\/03\/laravel-unit-testing.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@Kinsta_NL\" \/>\n<meta name=\"twitter:site\" content=\"@Kinsta_NL\" \/>\n<meta name=\"twitter:label1\" content=\"Geschreven door\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jeremy Holcombe\" \/>\n\t<meta name=\"twitter:label2\" content=\"Geschatte leestijd\" \/>\n\t<meta name=\"twitter:data2\" content=\"15 minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/laravel-unit-testing\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/laravel-unit-testing\/\"},\"author\":{\"name\":\"Jeremy Holcombe\",\"@id\":\"https:\/\/kinsta.com\/nl\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21\"},\"headline\":\"Sla unit testing niet over en bouw zo betere Laravel apps\",\"datePublished\":\"2024-03-19T08:25:15+00:00\",\"dateModified\":\"2024-03-22T09:15:37+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/laravel-unit-testing\/\"},\"wordCount\":2612,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/nl\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/laravel-unit-testing\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2024\/03\/laravel-unit-testing.jpg\",\"inLanguage\":\"nl-NL\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/nl\/blog\/laravel-unit-testing\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/laravel-unit-testing\/\",\"url\":\"https:\/\/kinsta.com\/nl\/blog\/laravel-unit-testing\/\",\"name\":\"Sla unit testing niet over en bouw zo betere Laravel apps - Kinsta\u00ae\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/nl\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/laravel-unit-testing\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/laravel-unit-testing\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2024\/03\/laravel-unit-testing.jpg\",\"datePublished\":\"2024-03-19T08:25:15+00:00\",\"dateModified\":\"2024-03-22T09:15:37+00:00\",\"description\":\"Dit artikel belicht het belang van unit testen in Laravel applicaties en hoe cruciaal dit is bij softwareontwikkeling.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/laravel-unit-testing\/#breadcrumb\"},\"inLanguage\":\"nl-NL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/nl\/blog\/laravel-unit-testing\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-NL\",\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/laravel-unit-testing\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2024\/03\/laravel-unit-testing.jpg\",\"contentUrl\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2024\/03\/laravel-unit-testing.jpg\",\"width\":1460,\"height\":730},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/laravel-unit-testing\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/nl\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Laravel\",\"item\":\"https:\/\/kinsta.com\/nl\/onderwerpen\/laravel\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Sla unit testing niet over en bouw zo betere Laravel apps\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/nl\/#website\",\"url\":\"https:\/\/kinsta.com\/nl\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Snelle, veilige, premium hostingoplossingen\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/nl\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/nl\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"nl-NL\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/nl\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/nl\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-NL\",\"@id\":\"https:\/\/kinsta.com\/nl\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/nl\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/Kinsta-Nederland-476213452787823\/\",\"https:\/\/x.com\/Kinsta_NL\",\"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\/nl\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21\",\"name\":\"Jeremy Holcombe\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-NL\",\"@id\":\"https:\/\/kinsta.com\/nl\/#\/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\/nl\/blog\/author\/jeremyholcombe\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Sla unit testing niet over en bouw zo betere Laravel apps - Kinsta\u00ae","description":"Dit artikel belicht het belang van unit testen in Laravel applicaties en hoe cruciaal dit is bij softwareontwikkeling.","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\/nl\/blog\/laravel-unit-testing\/","og_locale":"nl_NL","og_type":"article","og_title":"Sla unit testing niet over en bouw zo betere Laravel apps","og_description":"Dit artikel belicht het belang van unit testen in Laravel applicaties en hoe cruciaal dit is bij softwareontwikkeling.","og_url":"https:\/\/kinsta.com\/nl\/blog\/laravel-unit-testing\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/Kinsta-Nederland-476213452787823\/","article_published_time":"2024-03-19T08:25:15+00:00","article_modified_time":"2024-03-22T09:15:37+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2024\/03\/laravel-unit-testing.jpg","type":"image\/jpeg"}],"author":"Jeremy Holcombe","twitter_card":"summary_large_image","twitter_description":"Dit artikel belicht het belang van unit testen in Laravel applicaties en hoe cruciaal dit is bij softwareontwikkeling.","twitter_image":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2024\/03\/laravel-unit-testing.jpg","twitter_creator":"@Kinsta_NL","twitter_site":"@Kinsta_NL","twitter_misc":{"Geschreven door":"Jeremy Holcombe","Geschatte leestijd":"15 minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/nl\/blog\/laravel-unit-testing\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/nl\/blog\/laravel-unit-testing\/"},"author":{"name":"Jeremy Holcombe","@id":"https:\/\/kinsta.com\/nl\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21"},"headline":"Sla unit testing niet over en bouw zo betere Laravel apps","datePublished":"2024-03-19T08:25:15+00:00","dateModified":"2024-03-22T09:15:37+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/nl\/blog\/laravel-unit-testing\/"},"wordCount":2612,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/nl\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/nl\/blog\/laravel-unit-testing\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2024\/03\/laravel-unit-testing.jpg","inLanguage":"nl-NL","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/nl\/blog\/laravel-unit-testing\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/nl\/blog\/laravel-unit-testing\/","url":"https:\/\/kinsta.com\/nl\/blog\/laravel-unit-testing\/","name":"Sla unit testing niet over en bouw zo betere Laravel apps - Kinsta\u00ae","isPartOf":{"@id":"https:\/\/kinsta.com\/nl\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/nl\/blog\/laravel-unit-testing\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/nl\/blog\/laravel-unit-testing\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2024\/03\/laravel-unit-testing.jpg","datePublished":"2024-03-19T08:25:15+00:00","dateModified":"2024-03-22T09:15:37+00:00","description":"Dit artikel belicht het belang van unit testen in Laravel applicaties en hoe cruciaal dit is bij softwareontwikkeling.","breadcrumb":{"@id":"https:\/\/kinsta.com\/nl\/blog\/laravel-unit-testing\/#breadcrumb"},"inLanguage":"nl-NL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/nl\/blog\/laravel-unit-testing\/"]}]},{"@type":"ImageObject","inLanguage":"nl-NL","@id":"https:\/\/kinsta.com\/nl\/blog\/laravel-unit-testing\/#primaryimage","url":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2024\/03\/laravel-unit-testing.jpg","contentUrl":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2024\/03\/laravel-unit-testing.jpg","width":1460,"height":730},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/nl\/blog\/laravel-unit-testing\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/nl\/"},{"@type":"ListItem","position":2,"name":"Laravel","item":"https:\/\/kinsta.com\/nl\/onderwerpen\/laravel\/"},{"@type":"ListItem","position":3,"name":"Sla unit testing niet over en bouw zo betere Laravel apps"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/nl\/#website","url":"https:\/\/kinsta.com\/nl\/","name":"Kinsta\u00ae","description":"Snelle, veilige, premium hostingoplossingen","publisher":{"@id":"https:\/\/kinsta.com\/nl\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/nl\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"nl-NL"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/nl\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/nl\/","logo":{"@type":"ImageObject","inLanguage":"nl-NL","@id":"https:\/\/kinsta.com\/nl\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/nl\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/Kinsta-Nederland-476213452787823\/","https:\/\/x.com\/Kinsta_NL","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\/nl\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21","name":"Jeremy Holcombe","image":{"@type":"ImageObject","inLanguage":"nl-NL","@id":"https:\/\/kinsta.com\/nl\/#\/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\/nl\/blog\/author\/jeremyholcombe\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/posts\/58907","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/users\/199"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/comments?post=58907"}],"version-history":[{"count":5,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/posts\/58907\/revisions"}],"predecessor-version":[{"id":58944,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/posts\/58907\/revisions\/58944"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/58907\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/58907\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/58907\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/58907\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/58907\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/58907\/translations\/jp"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/58907\/translations\/nl"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/58907\/translations\/es"},{"href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/58907\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/media\/58908"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/media?parent=58907"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/tags?post=58907"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/topic?post=58907"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}