{"id":77088,"date":"2024-03-19T09:24:49","date_gmt":"2024-03-19T08:24:49","guid":{"rendered":"https:\/\/kinsta.com\/it\/?p=77088&#038;preview=true&#038;preview_id=77088"},"modified":"2024-03-21T11:11:15","modified_gmt":"2024-03-21T10:11:15","slug":"unit-testing-laravel","status":"publish","type":"post","link":"https:\/\/kinsta.com\/it\/blog\/unit-testing-laravel\/","title":{"rendered":"Usare lo unit testing per costruire applicazioni Laravel migliori"},"content":{"rendered":"<p>Gli unit test, o test unitari, sono fondamentali nello sviluppo del software, in quanto garantiscono che i componenti di un&#8217;applicazione funzionino come previsto in modo isolato. Scrivendo test per unit\u00e0 di codice specifiche, \u00e8 possibile identificare e correggere gli errori nelle prime fasi dello sviluppo, ottenendo un software pi\u00f9 affidabile e stabile.<\/p>\n<p>In una pipeline di continuous integration\/continuous delivery (CI\/CD), si possono eseguire questi test automaticamente dopo aver apportato modifiche alla base di codice. In questo modo si garantisce che il nuovo codice non introduca errori o interrompa le funzionalit\u00e0 esistenti.<\/p>\n<p>Questo articolo sottolinea l&#8217;importanza dello unit testing nelle <a href=\"https:\/\/kinsta.com\/it\/blog\/installare-laravel\/\">applicazioni Laravel<\/a>, spiegando come scrivere gli unit test per un&#8217;applicazione Laravel distribuita con il <a href=\"https:\/\/sevalla.com\/application-hosting\/\">servizio di Hosting di Applicazioni<\/a> di Kinsta.<br \/>\n<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" exclude=\"last\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc><\/p>\n<h2>Introduzione a PHPUnit<\/h2>\n<p><a href=\"https:\/\/kinsta.com\/it\/blog\/strumenti-php-testing\/#2-phpunit\">PHPUnit<\/a> \u00e8 un framework di testing molto diffuso all&#8217;interno dell&#8217;ecosistema PHP, progettato per i test unitari. Dispone di una robusta suite di strumenti per la creazione e l&#8217;esecuzione di test che lo rendono una risorsa fondamentale per garantire l&#8217;affidabilit\u00e0 e la qualit\u00e0 della base di codice.<\/p>\n<p><a href=\"https:\/\/laravel.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">Laravel<\/a> supporta i test con <a href=\"https:\/\/phpunit.readthedocs.io\/\" target=\"_blank\" rel=\"noopener noreferrer\">PHPUnit<\/a> e fornisce dei comodi metodi di aiuto che permettono di testare la propria applicazione.<\/p>\n<p>L&#8217;impostazione di PHPUnit in un progetto Laravel richiede una configurazione minima. Laravel fornisce un ambiente di test preconfigurato, che include un file <strong>phpunit.xml<\/strong> e una directory dedicata ai <strong>test<\/strong> per i propri file.<\/p>\n<p>In alternativa, \u00e8 possibile modificare il file <strong>phpunit.xml<\/strong> per definire opzioni personalizzate per un&#8217;esperienza di test su misura. \u00c8 anche possibile creare un file di ambiente <strong>.env.testing<\/strong> nella cartella principale del progetto invece di utilizzare il file <strong>.env<\/strong>.<\/p>\n<h2>Layout predefinito dei test in Laravel<\/h2>\n<p><a href=\"https:\/\/kinsta.com\/it\/argomenti\/laravel\/\">Laravel<\/a> offre un layout di directory predefinito e strutturato. La cartella principale del progetto Laravel contiene una cartella <strong>test<\/strong> con le sottodirectory <strong>Feature<\/strong> e <strong>Unit<\/strong>. Questo layout rende semplice separare i diversi tipi di test e mantenere un ambiente di test pulito e organizzato.<\/p>\n<p>Il file <strong>phpunit.xml<\/strong> in un progetto Laravel \u00e8 cruciale per orchestrare il processo di testing, assicurare la coerenza delle esecuzioni dei test e permettere di personalizzare il comportamento di PHPUnit in base ai requisiti del progetto. Permette di definire le modalit\u00e0 di esecuzione dei test, tra cui la definizione delle suite di test, la specificazione dell&#8217;ambiente di test e l&#8217;impostazione delle connessioni al database.<\/p>\n<p>Questo file specifica anche che la sessione, la cache e l&#8217;email devono essere impostate sul driver dell&#8217;array, assicurando che i dati della sessione, della cache e dell&#8217;email non persistano durante l&#8217;esecuzione dei test.<\/p>\n<aside role=\"note\" class=\"wp-block-kinsta-notice is-style-info\">\n            <h3>Info<\/h3>\n        <p>Il termine &#8220;driver&#8221; si riferisce a un&#8217;impostazione di configurazione che memorizza questi dati in un array in memoria durante i test, mantenendo l&#8217;isolamento e impedendo la persistenza dei dati tra le esecuzioni dei test.<\/p>\n<\/aside>\n\n<p>Esistono diversi tipi di test che si possono eseguire su un&#8217;applicazione Laravel:<\/p>\n<ul>\n<li><strong>Test unitari &#8211;<\/strong> si concentrano su singoli componenti del codice, come classi, metodi e funzioni. Questi test rimangono isolati dall&#8217;applicazione Laravel e verificano che determinate unit\u00e0 di codice funzionino come previsto. \u00c8 importante notare che i test definiti nella directory <strong>tests\/Unit<\/strong> non avviano l&#8217;applicazione Laravel, quindi non possono accedere al <a href=\"https:\/\/kinsta.com\/database\/\">database<\/a> o ad altri servizi offerti dal framework.<\/li>\n<li><strong>Test delle funzionalit\u00e0 &#8211;<\/strong> convalidano le funzionalit\u00e0 pi\u00f9 ampie dell&#8217;applicazione. Questi test simulano le richieste e le risposte HTTP, permettendo di testare le rotte, i controller e l&#8217;integrazione dei vari componenti. I test delle funzionalit\u00e0 aiutano a garantire che le diverse parti dell&#8217;applicazione funzionino come previsto.<\/li>\n<li><strong>Test del browser &#8211;<\/strong> si spinge oltre automatizzando le interazioni con il browser. I test utilizzano <a href=\"https:\/\/laravel.com\/docs\/10.x\/dusk\" target=\"_blank\" rel=\"noopener noreferrer\">Laravel Dusk<\/a>, uno strumento di automazione e test del browser, per simulare le interazioni dell&#8217;utente, come la compilazione di moduli e il clic sui pulsanti. I test del browser sono fondamentali per convalidare il comportamento di un&#8217;applicazione e l&#8217;esperienza dell&#8217;utente nei browser del mondo reale.<\/li>\n<\/ul>\n<h2>Concetti di sviluppo guidato dai test<\/h2>\n<p>Il test-driven development (TDD), lo sviluppo guidato dai test, \u00e8 un approccio allo sviluppo del software che enfatizza i test prima di implementare il codice. Questo approccio segue un processo noto come ciclo red-green-refactor.<\/p>\n<figure id=\"attachment_105526\" aria-describedby=\"caption-attachment-105526\" 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=\"Il ciclo di sviluppo guidato dai test che mostra il ciclo red-green-refactor.\" width=\"1001\" height=\"471\"><figcaption id=\"caption-attachment-105526\" class=\"wp-caption-text\">Il ciclo di sviluppo guidato dai test che mostra il ciclo red-green-refactor.<\/figcaption><\/figure>\n<p>Ecco una spiegazione di questo ciclo:<\/p>\n<ul>\n<li><strong>Fase red<\/strong> &#8211; si scrive un nuovo test per definire la funzionalit\u00e0 o un miglioramento di uno esistente prima di implementare il codice vero e proprio. Il test dovrebbe fallire (come indica il colore &#8220;rosso&#8221;) perch\u00e9 non c&#8217;\u00e8 il codice corrispondente per farlo passare.<\/li>\n<li><strong>Fase green<\/strong> &#8211; si scrive il codice sufficiente a far passare il test fallito, trasformandolo da rosso a verde. Il codice non sar\u00e0 ottimale, ma soddisfa i requisiti del caso di test corrispondente.<\/li>\n<li><strong>Fase refactor<\/strong> &#8211; si riformula il codice per migliorarne la leggibilit\u00e0, la manutenibilit\u00e0 e le prestazioni senza modificarne il comportamento. In questa fase, si possono tranquillamente apportare modifiche al codice senza preoccuparsi di eventuali problemi di regressione, perch\u00e9 i casi di test esistenti li individuano.<\/li>\n<\/ul>\n<p>Il TDD ha diversi vantaggi:<\/p>\n<ul>\n<li><strong>Individuazione precoce dei bug<\/strong> &#8211; il TDD aiuta a individuare i bug nelle prime fasi del processo di sviluppo, riducendo i costi e i tempi di risoluzione dei problemi pi\u00f9 avanti nel ciclo di sviluppo.<\/li>\n<li><strong>Miglioramento del design<\/strong> &#8211; il TDD incoraggia un codice modulare e non vincolato per una migliore progettazione del software. Incoraggia a pensare all&#8217;interfaccia e alle interazioni dei componenti prima dell&#8217;implementazione.<\/li>\n<li><strong>Fiducia nella rifattorizzazione<\/strong> &#8211; si pu\u00f2 rifattorizzare il codice con fiducia, sapendo che i test esistenti identificano rapidamente le regressioni introdotte durante la fase refactor.<\/li>\n<li><strong>Documentazione viva<\/strong> &#8211; i casi di test fungono da documentazione viva, fornendo esempi di come il codice dovrebbe comportarsi. Questa documentazione \u00e8 sempre aggiornata perch\u00e9 i test che falliscono indicano problemi nel codice.<\/li>\n<\/ul>\n<p>Nello sviluppo di Laravel, si applicano i principi TDD scrivendo test per componenti come controller, modelli e servizi prima di implementarli.<\/p>\n<p>L&#8217;ambiente di testing di Laravel, incluso PHPUnit, fornisce metodi e asserzioni utili per facilitare il TDD, assicurando di creare test significativi e di seguire efficacemente il ciclo red-green-refactor.<\/p>\n<h2>Esempi di base di test unitari<\/h2>\n<p>Questa sezione spiega come scrivere un semplice test per verificare la funzionalit\u00e0 di un modello.<\/p>\n<h3>Prerequisiti<\/h3>\n<p>Per seguirci, avrete bisogno di quanto segue:<\/p>\n<ul>\n<li>Soddisfare i prerequisiti elencati nella <a href=\"https:\/\/kinsta.com\/it\/blog\/blog-laravel\/#prerequisites\">guida al blog di Laravel<\/a>.<\/li>\n<li>Un&#8217;applicazione Laravel. Questo tutorial utilizza l&#8217;applicazione creata nella guida linkata sopra. Potete leggerla e creare l&#8217;applicazione del blog, ma se avete bisogno solo del codice sorgente per implementare i test, seguite i passaggi qui sotto.<\/li>\n<li><a href=\"https:\/\/xdebug.org\/docs\/install\" target=\"_blank\" rel=\"noopener noreferrer\">Xdebug<\/a> \u00e8 installato e configurato con la <a href=\"https:\/\/xdebug.org\/docs\/code_coverage#mode\" target=\"_blank\" rel=\"noopener noreferrer\">modalit\u00e0 di copertura abilitata<\/a>.<\/li>\n<\/ul>\n<h3>Configurare il progetto<\/h3>\n<ol start=\"1\">\n<li>Eseguite questo comando in una finestra di terminale per clonare il progetto.\n<pre><code class=\"language-bash\">git clone https:\/\/github.com\/VirtuaCreative\/kinsta-laravel-blog.git<\/code><\/pre>\n<\/li>\n<li>Spostatevi nella cartella del progetto ed eseguite il comando <code>composer install<\/code> per installare le dipendenze del progetto.<\/li>\n<li>Rinominate il file <strong>env.example<\/strong> in <strong>.env<\/strong>.<\/li>\n<li>Eseguite il comando <code>php artisan key:generate<\/code> per generare una chiave app.<\/li>\n<\/ol>\n<h3>Creare ed eseguire i test<\/h3>\n<p>Per iniziare, assicuratevi di avere il codice del progetto sul computer. Il modello da testare \u00e8 il modello <code>Post<\/code> definito nel file <strong>app\/Http\/Models\/Post.php<\/strong>. Questo modello comprende diversi attributi compilabili, come <code>title<\/code>, <code>description<\/code> e <code>image<\/code>.<\/p>\n<p>Il vostro compito consiste nel creare dei semplici test unitari per questo modello. Uno verifica che gli attributi siano impostati correttamente, mentre un altro esamina l&#8217;assegnazione di massa tentando di assegnare un attributo non riempibile.<\/p>\n<ol start=\"1\">\n<li>Eseguite il comando <code>php artisan make:test PostModelFunctionalityTest --unit<\/code> per creare un nuovo caso di test. L&#8217;opzione <code>--unit<\/code> specifica che si tratta di un test unitario e lo salva nella cartella <strong>tests\/Unit <\/strong>.<\/li>\n<li>Aprite il file <strong>tests\/Unit\/PostModelFunctionalityTest.php <\/strong>e sostituite la funzione <code>test_example<\/code> con questo codice:\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>Questo codice definisce due metodi di test.<\/p>\n<p>Il primo crea un&#8217;istanza <code>Post<\/code> con gli attributi specificati e, utilizzando il metodo di asserzione <code>assertEquals<\/code>, verifica che gli attributi <code>title<\/code>, <code>description<\/code> e <code>image<\/code> siano stati impostati correttamente.<\/p>\n<p>Il secondo metodo tenta di creare un&#8217;istanza <code>Post<\/code> con un attributo aggiuntivo non riempibile (<code>author<\/code>) e afferma che questo attributo non \u00e8 impostato sull&#8217;istanza del modello utilizzando il metodo di asserzione <code>assertArrayNotHasKey<\/code>.<\/li>\n<li>Assicuratevi di aggiungere la seguente dichiarazione <code>use<\/code> nello stesso file:\n<pre><code class=\"language-php\">use App\\Models\\Post;<\/code><\/pre>\n<\/li>\n<li>Eseguite il comando <code>php artisan config:clear<\/code> per cancellare la cache di configurazione.<\/li>\n<li>Per eseguire questi test, eseguite il comando:\n<pre><code class=\"language-php\">php artisan test tests\/Unit\/PostModelFunctionalityTest.php<\/code><\/pre>\n<p>Tutti i test dovrebbero essere superati e il terminale dovrebbe visualizzare i risultati e il tempo totale di esecuzione dei test.<\/li>\n<\/ol>\n<h3>Eseguire il debug dei test<\/h3>\n<p>Se i test falliscono, potete eseguire il debug seguendo questi passaggi:<\/p>\n<ol start=\"1\">\n<li>Esaminate il messaggio di errore nel terminale. Laravel fornisce messaggi di errore dettagliati che individuano il problema. Leggete attentamente il messaggio di errore per capire perch\u00e9 il test \u00e8 fallito.<\/li>\n<li>Ispezionate i test e il codice che state testando per identificare le discrepanze.<\/li>\n<li>Assicuratevi di aver impostato correttamente i dati e le dipendenze necessarie per il test.<\/li>\n<li>Usate strumenti di debug come la funzione <a href=\"https:\/\/kinsta.com\/it\/blog\/laravel-vs-wordpress\/#helper-functions\">dd()<\/a> di Laravel per ispezionare le variabili e i dati in punti specifici del codice di test.<\/li>\n<li>Una volta individuato il problema, apportate le modifiche necessarie e rieseguite i test finch\u00e9 non passano.<\/li>\n<\/ol>\n<h2>Test e database<\/h2>\n<p>Laravel offre un modo pratico per configurare un ambiente di test utilizzando un <a href=\"https:\/\/kinsta.com\/it\/blog\/sqlite-vs-mysql\/\">database SQLite<\/a> in-memory, che \u00e8 veloce e non conserva i dati tra le esecuzioni dei test. Per configurare l&#8217;ambiente del database di test e scrivere i test che interagiscono con il database, seguite questi passi:<\/p>\n<ol start=\"1\">\n<li>Aprite il file <strong>phpunit.xml<\/strong> e decommentate le seguenti righe di codice:\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>Eseguite il comando <code>php artisan make:test PostCreationTest --unit<\/code> per creare un nuovo caso di test.<\/li>\n<li>Aprite il file <strong>tests\/Unit\/PostCreationTest.php <\/strong>e sostituite il metodo <code>test_example<\/code> con il codice seguente:\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>Assicuratevi di aggiungere la seguente istruzione <code>use<\/code>:\n<pre><code class=\"language-php\">use App\\Models\\Post;<\/code><\/pre>\n<p>Attualmente, la classe <code>PostCreationTest<\/code> estende la classe base <code>PHPUnitFrameworkTestCase<\/code>. La classe base \u00e8 comunemente utilizzata per i test unitari quando si lavora direttamente con PHPUnit, al di fuori di Laravel, o quando si scrivono test per un componente non strettamente accoppiato a Laravel. Tuttavia, se avete bisogno di accedere al database, dovete modificare la classe <code>PostCreationTest<\/code> per estendere la classe <code>TestsTestCase<\/code>.<\/p>\n<p>Quest&#8217;ultima classe adatta la classe <code>PHPUnitFrameworkTestCase<\/code> alle applicazioni Laravel. Fornisce funzionalit\u00e0 aggiuntive e configurazioni specifiche di Laravel, come la semina del database e la configurazione dell&#8217;ambiente di prova.<\/li>\n<li>Assicuratevi di sostituire l&#8217;istruzione <code>use PHPUnitFrameworkTestCase;<\/code> con <code>use TestsTestCase;<\/code>. Ricordate che l&#8217;ambiente di test \u00e8 stato impostato per utilizzare un database SQLite in-memory. Pertanto, dovete migrare il database prima di eseguire i test. Per farlo, usate il trait <code>IlluminateFoundationTestingRefreshDatabase<\/code>. Questo trait migra il database se lo schema non \u00e8 aggiornato e resetta il database dopo ogni test per garantire che i dati del test precedente non interferiscano con i test successivi.<\/li>\n<li>Aggiungete la seguente istruzione <code>use<\/code> al file <strong>tests\/Unit\/PostCreationTest.php<\/strong> per incorporare questo trait nel codice:\n<pre><code class=\"language-php\">use Illuminate\\Foundation\\Testing\\RefreshDatabase;<\/code><\/pre>\n<\/li>\n<li>Quindi, aggiungete la seguente riga di codice subito prima del metodo <code>testPostCreation<\/code>:\n<pre><code class=\"language-php\">use RefreshDatabase;<\/code><\/pre>\n<\/li>\n<li>Eseguite il comando <code>php artisan config:clear<\/code> per cancellare la cache di configurazione.<\/li>\n<li>Per eseguire questo test, eseguite il comando:\n<pre><code class=\"language-php\">php artisan test tests\/Unit\/PostCreationTest.php<\/code><\/pre>\n<p>I test dovrebbero essere superati e il terminale dovrebbe visualizzare i risultati del test e il tempo totale di esecuzione.<\/li>\n<\/ol>\n<h2>Test di funzionalit\u00e0<\/h2>\n<p>Mentre i test unitari controllano i singoli componenti dell&#8217;applicazione in modo isolato, i test funzionali controllano porzioni di codice pi\u00f9 ampie, come ad esempio l&#8217;interazione tra diversi oggetti. I test delle funzionalit\u00e0 sono fondamentali per diversi motivi:<\/p>\n<ol start=\"1\">\n<li><strong>Convalida end-to-end<\/strong> &#8211; conferma che l&#8217;intera funzionalit\u00e0 funziona senza problemi, comprese le interazioni tra i vari componenti come controller, modelli, viste e persino il database.<\/li>\n<li><strong>Test end-to-end<\/strong> &#8211; coprono l&#8217;intero flusso dell&#8217;utente, dalla richiesta iniziale alla risposta finale, e possono scoprire problemi che i test unitari potrebbero ignorare. Questa capacit\u00e0 li rende preziosi per testare i percorsi degli utenti e gli scenari complessi.<\/li>\n<li><strong>Garanzia dell&#8217;esperienza dell&#8217;utente<\/strong> &#8211; imita le interazioni dell&#8217;utente, aiutando a verificare che l&#8217;esperienza dell&#8217;utente sia coerente e che la funzione funzioni come previsto.<\/li>\n<li><strong>Rilevamento delle regressioni<\/strong> &#8211; individua le regressioni e le modifiche al codice quando si introduce nuovo codice. Se una funzionalit\u00e0 esistente inizia a non funzionare in un test di funzionalit\u00e0, significa che qualcosa si \u00e8 rotto.<\/li>\n<\/ol>\n<p>Ora create un test di funzionalit\u00e0 per <code>PostController<\/code> nel file <strong>app\/Http\/Controllers\/PostController.php<\/strong>. Concentratrvi sul metodo <code>store<\/code>, sulla convalida dei dati in entrata e sulla creazione e archiviazione dei post nel database.<\/p>\n<p>Il test simula la creazione di un nuovo post da parte di un utente attraverso un&#8217;interfaccia web, assicurandovi che il codice memorizzi il post nel database e reindirizzi l&#8217;utente alla pagina dell&#8217;indice dei post dopo la creazione. Per farlo, seguite questi passaggi:<\/p>\n<ol start=\"1\">\n<li>Eseguite il comando <code>php artisan make:test PostControllerTest<\/code> per creare un nuovo caso di test nella cartella <strong>tests\/Features<\/strong>.<\/li>\n<li>Aprite il file <strong>tests\/Feature\/PostControllerTest.php<\/strong> e sostituite il metodo <code>test_example<\/code> con questo codice:\n<pre><code class=\"language-php\">use RefreshDatabase; \/\/ Refresh the database after each test\n\n   public function test_create_post()\n   {\n       \/\/ Simulate a user creating a new post through the web interface\n       $response = $this-&gt;post(route('posts.store'), [\n           'title' =&gt; 'New Post Title',\n           'description' =&gt; 'New Post Description',\n           'image' =&gt; $this-&gt;create_test_image(),\n       ]);\n\n       \/\/ Assert that the post is successfully stored in the database\n       $this-&gt;assertCount(1, Post::all());\n\n       \/\/ Assert that the user is redirected to the Posts Index page after post creation\n       $response-&gt;assertRedirect(route('posts.index'));\n   }\n\n   \/\/ Helper function to create a test image for the post\n   private function create_test_image()\n   {\n       \/\/ Create a mock image file using Laravel's UploadedFile class\n       $file = UploadedFile::fake()-&gt;image('test_image.jpg');\n\n       \/\/ Return the path to the temporary image file\n       return $file;\n   }<\/code><\/pre>\n<p>La funzione <code>test_create_post<\/code> simula la creazione di un nuovo post da parte di un utente che effettua una richiesta <code>POST<\/code> alla route <code>posts.store<\/code> con attributi specifici, tra cui una finta immagine generata dalla classe <code>UploadedFile<\/code> di Laravel.<\/p>\n<p>Il test verifica che il codice sia riuscito a memorizzare il post nel database controllando il conteggio di <code>Post::all()<\/code>. Verifica che il codice reindirizzi l&#8217;utente alla pagina dell&#8217;indice dei post dopo la creazione del post.<\/p>\n<p>Questo test assicura che la funzionalit\u00e0 di creazione dei post funzioni e che l&#8217;applicazione gestisca correttamente le interazioni con il database e i reindirizzamenti dopo l&#8217;invio dei post.<\/li>\n<li>Aggiungete le seguenti istruzioni <code>use<\/code> allo stesso file:\n<pre><code class=\"language-php\">use App\\Models\\Post;\nuse Illuminate\\Http\\UploadedFile;<\/code><\/pre>\n<\/li>\n<li>Eseguite il comando <code>php artisan config:clear<\/code> per cancellare la cache di configurazione.<\/li>\n<li>Per eseguire questo test, eseguite questo comando:\n<pre><code class=\"language-php\">php artisan test tests\/Feature\/PostControllerTest.php<\/code><\/pre>\n<p>Il test dovrebbe essere superato e il terminale dovrebbe mostrare i risultati del test e il tempo totale per eseguirlo.<\/li>\n<\/ol>\n<h2>Confermare la copertura dei test<\/h2>\n<p>La copertura dei test si riferisce alla quantit\u00e0 di codice che i test di unit\u00e0, funzionalit\u00e0 o browser controllano, espressa in percentuale. Aiuta a identificare le aree non testate della base di codice e le aree non testate che potrebbero contenere bug.<\/p>\n<p>Strumenti come la funzione di copertura del codice di PHPUnit e il report di copertura integrato di Laravel generano rapporti che mostrano quali parti della base di codice sono coperte dai test. Questo processo fornisce informazioni fondamentali sulla qualit\u00e0 dei test e vi aiuta a concentrarvi sulle aree che potrebbero richiedere ulteriori test.<\/p>\n<h3>Generare un report<\/h3>\n<ol start=\"1\">\n<li>Eliminate i file <strong>tests\/Feature\/ExampleTest.php<\/strong> e <strong>tests\/Unit\/ExampleTest.php<\/strong>, poich\u00e9 non sono stati modificati e potrebbero causare errori.<\/li>\n<li>Eseguite il comando <code>php artisan test --coverage<\/code> in una finestra di terminale. Dovreste ricevere un output come il seguente:\n<figure id=\"attachment_105526\" aria-describedby=\"caption-attachment-105526\" 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=\"Screenshot che mostra l'esecuzione del comando php artisan test --coverage. Mostra il numero totale di test superati e il tempo di esecuzione dei risultati. Inoltre elenca ogni componente della tua base di codice e la sua percentuale di copertura del codice\" width=\"1001\" height=\"471\"><figcaption id=\"caption-attachment-105526\" class=\"wp-caption-text\">Esecuzione del comando <code>php artisan test --coverage<\/code>.<\/figcaption><\/figure>\n<p>Il report sulla copertura del codice mostra i risultati dei test, il numero totale di test superati e il tempo di esecuzione dei risultati. Inoltre elenca ogni componente della base di codice e la sua percentuale di copertura del codice. Le percentuali rappresentano la percentuale di codice coperta dai test.<\/p>\n<p>Ad esempio, <code>Models\/Post<\/code> ha una copertura del 100%, il che significa che tutti i metodi e le righe di codice del modello sono coperti. Il report sulla copertura del codice mostra anche la <strong>Copertura totale<\/strong>, ovvero la copertura complessiva del codice per l&#8217;intera base di codice. In questo caso, i test coprono solo <strong>il 65,3%<\/strong> del codice.<\/li>\n<li>Per specificare una soglia minima di copertura, eseguite il comando <code>php artisan test --coverage --min=85<\/code>. Questo comando imposta una soglia minima dell&#8217;85%. Dovreste ricevere il seguente output:\n<figure id=\"attachment_105526\" aria-describedby=\"caption-attachment-105526\" 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=\"Screenshot che mostra il report di copertura con una soglia minima dell'85%. L'ultima riga segnala che il test fallisce perch\u00e9 non soddisfa la soglia minima.\" width=\"1001\" height=\"471\"><figcaption id=\"caption-attachment-105526\" class=\"wp-caption-text\">Test con una soglia minima dell&#8217;85%.<\/figcaption><\/figure>\n<p>Le suite di test falliscono perch\u00e9 il codice non soddisfa la soglia minima dell&#8217;85%.<\/p>\n<p>Sebbene l&#8217;obiettivo sia quello di ottenere una copertura del codice pi\u00f9 elevata, spesso pari al 100%, \u00e8 pi\u00f9 importante testare a fondo le parti critiche e complesse della propria applicazione.<\/li>\n<\/ol>\n<h2>Riepilogo<\/h2>\n<p>Adottando le best practice descritte in questo articolo, come la scrittura di test significativi e completi, il rispetto del ciclo red-green-refactor in TDD e l&#8217;utilizzo delle funzionalit\u00e0 di testing fornite da Laravel e PHPUnit, potrete creare applicazioni robuste e di alta qualit\u00e0.<\/p>\n<p>Inoltre, avete la possibilit\u00e0 di <a href=\"https:\/\/sevalla.com\/application-hosting\/\">ospitare la vostra applicazione Laravel<\/a> con l&#8217;infrastruttura rapida, sicura e affidabile di Kinsta. Potrete anche utilizzare l&#8217;<a href=\"https:\/\/api-docs.kinsta.com\/tag\/Application-Deployments#operation\/manualDeployApplication\" target=\"_blank\" rel=\"noopener noreferrer\">API di Kinsta<\/a> per avviare le <a href=\"https:\/\/kinsta.com\/it\/blog\/come-creare-una-pipeline-ci-cd\/\">distribuzioni all&#8217;interno delle vostre pipeline CI\/CD<\/a> attraverso piattaforme come GitHub Actions, <a href=\"https:\/\/kinsta.com\/it\/blog\/continuous-deployment-react\/\">CircleCI<\/a> e altre ancora.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Gli unit test, o test unitari, sono fondamentali nello sviluppo del software, in quanto garantiscono che i componenti di un&#8217;applicazione funzionino come previsto in modo isolato. &#8230;<\/p>\n","protected":false},"author":199,"featured_media":77089,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[25853,26020],"class_list":["post-77088","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-database-mysql","topic-laravel"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.6 (Yoast SEO v24.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Usare lo unit testing per costruire applicazioni Laravel migliori - Kinsta\u00ae<\/title>\n<meta name=\"description\" content=\"Questo articolo evidenzia l&#039;importanza dello unit testing nelle applicazioni Laravel e quanto sia cruciale nello sviluppo del software.\" \/>\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\/it\/blog\/unit-testing-laravel\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Usare lo unit testing per costruire applicazioni Laravel migliori\" \/>\n<meta property=\"og:description\" content=\"Questo articolo evidenzia l&#039;importanza dello unit testing nelle applicazioni Laravel e quanto sia cruciale nello sviluppo del software.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/it\/blog\/unit-testing-laravel\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinstaitalia\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-03-19T08:24:49+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-03-21T10:11:15+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/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=\"Questo articolo evidenzia l&#039;importanza dello unit testing nelle applicazioni Laravel e quanto sia cruciale nello sviluppo del software.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2024\/03\/laravel-unit-testing.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@Kinsta_IT\" \/>\n<meta name=\"twitter:site\" content=\"@Kinsta_IT\" \/>\n<meta name=\"twitter:label1\" content=\"Scritto da\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jeremy Holcombe\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo di lettura stimato\" \/>\n\t<meta name=\"twitter:data2\" content=\"15 minuti\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/unit-testing-laravel\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/unit-testing-laravel\/\"},\"author\":{\"name\":\"Jeremy Holcombe\",\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21\"},\"headline\":\"Usare lo unit testing per costruire applicazioni Laravel migliori\",\"datePublished\":\"2024-03-19T08:24:49+00:00\",\"dateModified\":\"2024-03-21T10:11:15+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/unit-testing-laravel\/\"},\"wordCount\":2641,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/it\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/unit-testing-laravel\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2024\/03\/laravel-unit-testing.jpg\",\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/it\/blog\/unit-testing-laravel\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/unit-testing-laravel\/\",\"url\":\"https:\/\/kinsta.com\/it\/blog\/unit-testing-laravel\/\",\"name\":\"Usare lo unit testing per costruire applicazioni Laravel migliori - Kinsta\u00ae\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/it\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/unit-testing-laravel\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/unit-testing-laravel\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2024\/03\/laravel-unit-testing.jpg\",\"datePublished\":\"2024-03-19T08:24:49+00:00\",\"dateModified\":\"2024-03-21T10:11:15+00:00\",\"description\":\"Questo articolo evidenzia l'importanza dello unit testing nelle applicazioni Laravel e quanto sia cruciale nello sviluppo del software.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/unit-testing-laravel\/#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/it\/blog\/unit-testing-laravel\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/unit-testing-laravel\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2024\/03\/laravel-unit-testing.jpg\",\"contentUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2024\/03\/laravel-unit-testing.jpg\",\"width\":1460,\"height\":730},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/unit-testing-laravel\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/it\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Laravel\",\"item\":\"https:\/\/kinsta.com\/it\/argomenti\/laravel\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Usare lo unit testing per costruire applicazioni Laravel migliori\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/it\/#website\",\"url\":\"https:\/\/kinsta.com\/it\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Soluzioni di hosting premium, veloci e sicure\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/it\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/it\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"it-IT\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/it\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/it\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinstaitalia\/\",\"https:\/\/x.com\/Kinsta_IT\",\"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\/it\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21\",\"name\":\"Jeremy Holcombe\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/kinsta.com\/it\/#\/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\/it\/blog\/author\/jeremyholcombe\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Usare lo unit testing per costruire applicazioni Laravel migliori - Kinsta\u00ae","description":"Questo articolo evidenzia l'importanza dello unit testing nelle applicazioni Laravel e quanto sia cruciale nello sviluppo del software.","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\/it\/blog\/unit-testing-laravel\/","og_locale":"it_IT","og_type":"article","og_title":"Usare lo unit testing per costruire applicazioni Laravel migliori","og_description":"Questo articolo evidenzia l'importanza dello unit testing nelle applicazioni Laravel e quanto sia cruciale nello sviluppo del software.","og_url":"https:\/\/kinsta.com\/it\/blog\/unit-testing-laravel\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinstaitalia\/","article_published_time":"2024-03-19T08:24:49+00:00","article_modified_time":"2024-03-21T10:11:15+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2024\/03\/laravel-unit-testing.jpg","type":"image\/jpeg"}],"author":"Jeremy Holcombe","twitter_card":"summary_large_image","twitter_description":"Questo articolo evidenzia l'importanza dello unit testing nelle applicazioni Laravel e quanto sia cruciale nello sviluppo del software.","twitter_image":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2024\/03\/laravel-unit-testing.jpg","twitter_creator":"@Kinsta_IT","twitter_site":"@Kinsta_IT","twitter_misc":{"Scritto da":"Jeremy Holcombe","Tempo di lettura stimato":"15 minuti"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/it\/blog\/unit-testing-laravel\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/it\/blog\/unit-testing-laravel\/"},"author":{"name":"Jeremy Holcombe","@id":"https:\/\/kinsta.com\/it\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21"},"headline":"Usare lo unit testing per costruire applicazioni Laravel migliori","datePublished":"2024-03-19T08:24:49+00:00","dateModified":"2024-03-21T10:11:15+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/it\/blog\/unit-testing-laravel\/"},"wordCount":2641,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/it\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/it\/blog\/unit-testing-laravel\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2024\/03\/laravel-unit-testing.jpg","inLanguage":"it-IT","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/it\/blog\/unit-testing-laravel\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/it\/blog\/unit-testing-laravel\/","url":"https:\/\/kinsta.com\/it\/blog\/unit-testing-laravel\/","name":"Usare lo unit testing per costruire applicazioni Laravel migliori - Kinsta\u00ae","isPartOf":{"@id":"https:\/\/kinsta.com\/it\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/it\/blog\/unit-testing-laravel\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/it\/blog\/unit-testing-laravel\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2024\/03\/laravel-unit-testing.jpg","datePublished":"2024-03-19T08:24:49+00:00","dateModified":"2024-03-21T10:11:15+00:00","description":"Questo articolo evidenzia l'importanza dello unit testing nelle applicazioni Laravel e quanto sia cruciale nello sviluppo del software.","breadcrumb":{"@id":"https:\/\/kinsta.com\/it\/blog\/unit-testing-laravel\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/it\/blog\/unit-testing-laravel\/"]}]},{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/kinsta.com\/it\/blog\/unit-testing-laravel\/#primaryimage","url":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2024\/03\/laravel-unit-testing.jpg","contentUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2024\/03\/laravel-unit-testing.jpg","width":1460,"height":730},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/it\/blog\/unit-testing-laravel\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/it\/"},{"@type":"ListItem","position":2,"name":"Laravel","item":"https:\/\/kinsta.com\/it\/argomenti\/laravel\/"},{"@type":"ListItem","position":3,"name":"Usare lo unit testing per costruire applicazioni Laravel migliori"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/it\/#website","url":"https:\/\/kinsta.com\/it\/","name":"Kinsta\u00ae","description":"Soluzioni di hosting premium, veloci e sicure","publisher":{"@id":"https:\/\/kinsta.com\/it\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/it\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"it-IT"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/it\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/it\/","logo":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/kinsta.com\/it\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/it\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinstaitalia\/","https:\/\/x.com\/Kinsta_IT","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\/it\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21","name":"Jeremy Holcombe","image":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/kinsta.com\/it\/#\/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\/it\/blog\/author\/jeremyholcombe\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts\/77088","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/users\/199"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/comments?post=77088"}],"version-history":[{"count":6,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts\/77088\/revisions"}],"predecessor-version":[{"id":77117,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts\/77088\/revisions\/77117"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/77088\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/77088\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/77088\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/77088\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/77088\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/77088\/translations\/jp"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/77088\/translations\/nl"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/77088\/translations\/es"},{"href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/77088\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/media\/77089"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/media?parent=77088"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/tags?post=77088"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/topic?post=77088"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}