{"id":67728,"date":"2024-03-19T05:26:11","date_gmt":"2024-03-19T08:26:11","guid":{"rendered":"https:\/\/kinqsta.com\/pt\/?p=67728&#038;preview=true&#038;preview_id=67728"},"modified":"2024-03-22T18:59:15","modified_gmt":"2024-03-22T21:59:15","slug":"testes-unidade-laravel","status":"publish","type":"post","link":"https:\/\/kinqsta.com\/pt\/blog\/testes-unidade-laravel\/","title":{"rendered":"N\u00e3o Ignore os Testes de Unidade e Crie Aplicativos Laravel Melhores"},"content":{"rendered":"<p>O teste de unidade \u00e9 fundamental no desenvolvimento de software, garantindo que os componentes do aplicativo funcionem isoladamente conforme o esperado. Ao escrever testes para unidades de c\u00f3digo espec\u00edficas, voc\u00ea pode identificar e corrigir erros no in\u00edcio do desenvolvimento, o que resulta em um software mais confi\u00e1vel e est\u00e1vel.<\/p>\n<p>Em um pipeline de integra\u00e7\u00e3o cont\u00ednua\/entrega cont\u00ednua (CI\/CD), voc\u00ea pode executar esses testes automaticamente ap\u00f3s fazer altera\u00e7\u00f5es na base de c\u00f3digo. Isso garante que o novo c\u00f3digo n\u00e3o introduza erros nem danifique a funcionalidade existente.<\/p>\n<p>Este artigo destaca a import\u00e2ncia de testes unit\u00e1rios em <a href=\"https:\/\/kinqsta.com\/pt\/blog\/instalar-laravel\/\">aplicativos Laravel<\/a>, detalhando como escrever testes unit\u00e1rios para um aplicativo Laravel implantado usando o <a href=\"https:\/\/sevalla.com\/application-hosting\/\">servi\u00e7o de Hospedagem de Aplicativos<\/a> da 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>Introdu\u00e7\u00e3o ao PHPUnit<\/h2>\n<p>O <a href=\"https:\/\/kinqsta.com\/pt\/blog\/ferramentas-de-teste-php\/#2-phpunit\">PHPUnit<\/a> \u00e9 um framework de testes amplamente utilizado no ecossistema PHP, projetado para testes unit\u00e1rios. Ele tem um conjunto robusto de ferramentas para criar e executar testes, o que o torna um recurso essencial para garantir a confiabilidade e a qualidade da sua base de c\u00f3digo.<\/p>\n<p>O <a href=\"https:\/\/laravel.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">Laravel<\/a> oferece suporte a testes com <a href=\"https:\/\/phpunit.readthedocs.io\/\" target=\"_blank\" rel=\"noopener noreferrer\">PHPUnit<\/a> e \u00e9 equipado com m\u00e9todos auxiliares convenientes que permitem que voc\u00ea teste seu aplicativo.<\/p>\n<p>Configurar o PHPUnit em um projeto Laravel envolve ajustes m\u00ednimos. O Laravel fornece um ambiente de teste pr\u00e9-configurado, incluindo um arquivo <strong>phpunit.xml<\/strong> e um diret\u00f3rio <strong>tests <\/strong>dedicado para seus arquivos de teste.<\/p>\n<p>Adicionalmente, \u00e9 poss\u00edvel modificar o arquivo <strong>phpunit.xml<\/strong> com op\u00e7\u00f5es personalizadas para uma experi\u00eancia de teste sob medida. Voc\u00ea tamb\u00e9m pode criar um arquivo de ambiente <strong>.env.testing <\/strong>na pasta raiz do projeto em vez de usar o arquivo <strong>.env<\/strong>.<\/p>\n<h2>Layout padr\u00e3o de testes no Laravel<\/h2>\n<p>O <a href=\"https:\/\/kinqsta.com\/pt\/topicos\/laravel\/\">Laravel<\/a> fornece um layout padr\u00e3o de diret\u00f3rio estruturado. O diret\u00f3rio raiz do seu projeto Laravel cont\u00e9m um diret\u00f3rio <strong>tests<\/strong> com os subdiret\u00f3rios <strong>Feature <\/strong>e <strong>Unit<\/strong>. Esse layout simplifica a tarefa de separar diferentes tipos de teste e mant\u00e9m um ambiente de teste limpo e organizado.<\/p>\n<p>O arquivo <strong>phpunit.xml<\/strong> em um projeto Laravel \u00e9 crucial para orquestrar o processo de testes, garantindo a consist\u00eancia nas execu\u00e7\u00f5es de testes e permitindo personalizar o comportamento do PHPUnit conforme os requisitos do projeto. Ele permite definir como executar os testes, incluindo a defini\u00e7\u00e3o de su\u00edtes de teste, a especifica\u00e7\u00e3o do ambiente de teste, e a configura\u00e7\u00e3o de conex\u00f5es de bancos de dados.<\/p>\n<p>Esse arquivo tamb\u00e9m especifica que a sess\u00e3o, o cache e o e-mail devem ser definidos para o driver do array, garantindo que nenhum dado da sess\u00e3o, do cache ou do e-mail persista durante a execu\u00e7\u00e3o dos testes.<\/p>\n<aside role=\"note\" class=\"wp-block-kinsta-notice is-style-info\">\n            <h3>Info<\/h3>\n        <p>O termo &#8220;driver&#8221; refere-se a uma configura\u00e7\u00e3o que armazena esses dados em um array in-memory durante o teste, mantendo o isolamento e evitando a persist\u00eancia de dados entre uma execu\u00e7\u00e3o de teste e outra.<\/p>\n<\/aside>\n\n<p>Voc\u00ea pode executar v\u00e1rios tipos de testes em seu aplicativo Laravel:<\/p>\n<ul>\n<li><strong>Teste de unidade <\/strong>\u2014 Concentra-se em componentes individuais do seu c\u00f3digo, como classes, m\u00e9todos e fun\u00e7\u00f5es. Esses testes permanecem isolados do aplicativo Laravel e verificam se unidades de c\u00f3digo espec\u00edficas funcionam conforme o esperado. Observe que os testes definidos no diret\u00f3rio <strong>tests\/Unit <\/strong>n\u00e3o inicializam o aplicativo Laravel, o que significa que eles n\u00e3o podem acessar o <a href=\"https:\/\/kinqsta.com\/database\/\">banco de dados<\/a> ou outros servi\u00e7os que o framework oferece.<\/li>\n<li><strong>Teste de recursos <\/strong>\u2014 Valida a funcionalidade mais ampla do seu aplicativo. Esses testes simulam solicita\u00e7\u00f5es e respostas HTTP, permitindo que voc\u00ea teste rotas, controladores e a integra\u00e7\u00e3o de v\u00e1rios componentes. Os testes de recursos ajudam a garantir que as diferentes partes do seu aplicativo funcionem juntas conforme o esperado.<\/li>\n<li><strong>Teste de navegador \u2014<\/strong>\u00a0Vai al\u00e9m, automatizando intera\u00e7\u00f5es com o navegador. Os testes usam o <a href=\"https:\/\/laravel.com\/docs\/10.x\/dusk\" target=\"_blank\" rel=\"noopener noreferrer\">Laravel Dusk<\/a>, uma ferramenta de automa\u00e7\u00e3o e teste do navegador, para simular intera\u00e7\u00f5es de usu\u00e1rio como o preenchimento de formul\u00e1rios e o clique em bot\u00f5es. Os testes de navegador s\u00e3o cruciais para validar o comportamento do seu aplicativo e a experi\u00eancia do usu\u00e1rio em navegadores do mundo real.<\/li>\n<\/ul>\n<h2>Conceitos de desenvolvimento orientado por testes<\/h2>\n<p>Desenvolvimento orientado por testes (TDD) \u00e9 uma abordagem de desenvolvimento de software que enfatiza os testes antes de implementar o c\u00f3digo. Essa abordagem segue um processo conhecido como ciclo vermelho-verde-refatorar.<\/p>\n<figure style=\"width: 1001px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2024\/03\/tdd-cycle.jpg\" alt=\"O desenvolvimento orientado por testes mostrando o ciclo vermelho-verde-refatorar.\" width=\"1001\" height=\"471\"><figcaption class=\"wp-caption-text\">O desenvolvimento orientado por testes mostrando o ciclo vermelho-verde-refatorar.<\/figcaption><\/figure>\n<p>Aqui est\u00e1 uma explica\u00e7\u00e3o desse ciclo:<\/p>\n<ul>\n<li><strong>Fase vermelha<\/strong> \u2014 Escreva um novo teste para definir a funcionalidade ou uma melhoria em um teste existente antes de implementar o c\u00f3digo real. O teste deve falhar (&#8220;vermelho&#8221;) porque n\u00e3o h\u00e1 c\u00f3digo correspondente para que seja aprovado.<\/li>\n<li><strong>Fase verde<\/strong> \u2014 Escreva apenas o c\u00f3digo suficiente para que o teste que falhou seja aprovado, alterando-o de vermelho para verde. O c\u00f3digo n\u00e3o ser\u00e1 ideal, mas atender\u00e1 aos requisitos do caso de teste correspondente.<\/li>\n<li><strong>Fase de refatora\u00e7\u00e3o <\/strong>\u2014 Refatore o c\u00f3digo para melhorar sua legibilidade, manuten\u00e7\u00e3o e desempenho sem alterar seu comportamento. Nesta fase, voc\u00ea pode fazer altera\u00e7\u00f5es no c\u00f3digo sem se preocupar com problemas de regress\u00e3o, pois os casos de teste existentes os detectam.<\/li>\n<\/ul>\n<p>O TDD tem v\u00e1rios benef\u00edcios:<\/p>\n<ul>\n<li><strong>Detec\u00e7\u00e3o precoce de bugs<\/strong>\u00a0\u2014 O TDD ajuda a detectar bugs no in\u00edcio do processo de desenvolvimento, ajudando a reduzir o custo e o tempo de corre\u00e7\u00e3o de problemas mais tarde no ciclo de desenvolvimento.<\/li>\n<li><strong>Design aprimorado<\/strong> \u2014 O TDD incentiva o c\u00f3digo modular e pouco acoplado para melhorar o design do software. Incentiva a pensar na interface e nas intera\u00e7\u00f5es dos componentes antes da implementa\u00e7\u00e3o.<\/li>\n<li><strong>Confian\u00e7a na refatora\u00e7\u00e3o<\/strong> \u2014 Voc\u00ea pode refatorar o c\u00f3digo com confian\u00e7a, sabendo que os testes existentes identificam rapidamente quaisquer regress\u00f5es introduzidas durante a refatora\u00e7\u00e3o.<\/li>\n<li><strong>Documenta\u00e7\u00e3o viva<\/strong> \u2014 Os casos de teste servem como documenta\u00e7\u00e3o viva, fornecendo exemplos de como o c\u00f3digo deve se comportar. Essa documenta\u00e7\u00e3o est\u00e1 sempre atualizada, visto que falhas nos testes indicam problemas no c\u00f3digo.<\/li>\n<\/ul>\n<p>No desenvolvimento em Laravel, voc\u00ea aplica os princ\u00edpios do TDD ao escrever testes para componentes como controladores, modelos e servi\u00e7os antes de implement\u00e1-los.<\/p>\n<p>O ambiente de teste do Laravel, incluindo o PHPUnit, fornece m\u00e9todos e asser\u00e7\u00f5es convenientes para facilitar o TDD, garantindo que voc\u00ea possa criar testes significativos e seguir o ciclo vermelho-verde-refatorar de forma eficaz.<\/p>\n<h2>Exemplos b\u00e1sicos de teste de unidade<\/h2>\n<p>Esta se\u00e7\u00e3o explica como escrever um teste simples para verificar a funcionalidade do seu modelo.<\/p>\n<h3>Pr\u00e9-requisitos<\/h3>\n<p>Para acompanhar, voc\u00ea precisa do seguinte:<\/p>\n<ul>\n<li>Atender aos pr\u00e9-requisitos listados no <a href=\"https:\/\/kinqsta.com\/pt\/blog\/blog-laravel\/#prerequisites\">guia do blog do Laravel<\/a>.<\/li>\n<li>Um aplicativo Laravel. Este tutorial usa o aplicativo criado no guia do link acima. Voc\u00ea pode l\u00ea-lo e criar o aplicativo de blog, mas se precisar apenas do c\u00f3digo-fonte para implementar os testes, siga as etapas abaixo.<\/li>\n<li><a href=\"https:\/\/xdebug.org\/docs\/install\" target=\"_blank\" rel=\"noopener noreferrer\">Xdebug<\/a> instalado e configurado com o <a href=\"https:\/\/xdebug.org\/docs\/code_coverage#mode\" target=\"_blank\" rel=\"noopener noreferrer\">modo de cobertura ativado<\/a>.<\/li>\n<\/ul>\n<h3>Configure o projeto<\/h3>\n<ol start=\"1\">\n<li>Execute este comando em uma janela de terminal para clonar o projeto.\n<pre><code class=\"language-bash\">git clone https:\/\/github.com\/VirtuaCreative\/kinsta-laravel-blog.git<\/code><\/pre>\n<\/li>\n<li>V\u00e1 para a pasta do projeto e execute o comando <code>composer install<\/code> para instalar as depend\u00eancias do projeto.<\/li>\n<li>Renomeie o arquivo <strong>env.example<\/strong> para <strong>.env<\/strong>.<\/li>\n<li>Execute o comando <code>php artisan key:generate<\/code> para gerar uma chave de aplicativo.<\/li>\n<\/ol>\n<h3>Crie e execute os testes<\/h3>\n<p>Para come\u00e7ar, certifique-se de ter o c\u00f3digo do projeto em seu computador. O modelo que voc\u00ea testar\u00e1 \u00e9 o modelo <code>Post<\/code> definido no arquivo <strong>app\/Http\/Models\/Post.php<\/strong>. Esse modelo engloba v\u00e1rios atributos preench\u00edveis, como <code>title<\/code>, <code>description<\/code> e <code>image<\/code>.<\/p>\n<p>Sua tarefa envolve criar testes unit\u00e1rios simples para esse modelo. Um deles verifica se os atributos est\u00e3o definidos corretamente, enquanto outro examina a atribui\u00e7\u00e3o em massa ao tentar atribuir um atributo n\u00e3o preench\u00edvel.<\/p>\n<ol start=\"1\">\n<li>Execute o comando <code>php artisan make:test PostModelFunctionalityTest --unit<\/code> para criar um novo caso de teste. A op\u00e7\u00e3o <code>--unit<\/code> especifica que esse \u00e9 um teste de unidade e o salva no diret\u00f3rio <strong>tests\/Unit<\/strong>.<\/li>\n<li>Abra o arquivo <strong>tests\/Unit\/PostModelFunctionalityTest.php <\/strong>e substitua a fun\u00e7\u00e3o <code>test_example<\/code> por este c\u00f3digo:\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>Esse c\u00f3digo define dois m\u00e9todos de teste.<\/p>\n<p>O primeiro cria uma inst\u00e2ncia <code>Post<\/code> com atributos espec\u00edficos, usando o m\u00e9todo de asser\u00e7\u00e3o <code>assertEquals<\/code>, afirma que voc\u00ea definiu os atributos <code>title<\/code>, <code>description<\/code> e <code>image<\/code> corretamente.<\/p>\n<p>O segundo m\u00e9todo tenta criar uma inst\u00e2ncia de <code>Post<\/code> com um atributo adicional n\u00e3o preench\u00edvel (<code>author<\/code>) e afirma que esse atributo n\u00e3o est\u00e1 definido na inst\u00e2ncia do modelo usando o m\u00e9todo de asser\u00e7\u00e3o <code>assertArrayNotHasKey<\/code>.<\/li>\n<li>Certifique-se de adicionar a seguinte instru\u00e7\u00e3o <code>use<\/code> no mesmo arquivo:\n<pre><code class=\"language-php\">use App\\Models\\Post;<\/code><\/pre>\n<\/li>\n<li>Execute o comando <code>php artisan config:clear<\/code> para limpar o cache de configura\u00e7\u00e3o.<\/li>\n<li>Para executar esses testes, execute o seguinte comando:\n<pre><code class=\"language-php\">php artisan test tests\/Unit\/PostModelFunctionalityTest.php<\/code><\/pre>\n<p>Todos os testes devem ser aprovados e o terminal deve exibir os resultados e o tempo total de execu\u00e7\u00e3o dos testes.<\/li>\n<\/ol>\n<h3>Testes de depura\u00e7\u00e3o<\/h3>\n<p>Se os testes falharem, voc\u00ea poder\u00e1 depur\u00e1-los seguindo estas etapas:<\/p>\n<ol start=\"1\">\n<li>Revise a mensagem de erro no terminal. O Laravel fornece mensagens de erro detalhadas que apontam precisamente o problema. Leia atentamente a mensagem de erro para entender por que o teste falhou.<\/li>\n<li>Inspecione os testes e o c\u00f3digo que voc\u00ea est\u00e1 testando para identificar discrep\u00e2ncias.<\/li>\n<li>Certifique-se de que voc\u00ea configurou corretamente os dados e as depend\u00eancias necess\u00e1rias para o teste.<\/li>\n<li>Use ferramentas de depura\u00e7\u00e3o como a fun\u00e7\u00e3o <a href=\"https:\/\/kinqsta.com\/pt\/blog\/laravel-vs-wordpress\/#helper-functions\">dd()<\/a> do Laravel para inspecionar vari\u00e1veis e dados em pontos espec\u00edficos do c\u00f3digo de teste.<\/li>\n<li>Depois que voc\u00ea identificar o problema, fa\u00e7a as altera\u00e7\u00f5es necess\u00e1rias e execute novamente os testes at\u00e9 que eles sejam aprovados.<\/li>\n<\/ol>\n<h2>Testes e bancos de dados<\/h2>\n<p>O Laravel fornece uma maneira conveniente de configurar um ambiente de teste usando um <a href=\"https:\/\/kinqsta.com\/pt\/blog\/sqlite-vs-mysql\/\">banco de dados SQLite<\/a> in-memory, que \u00e9 r\u00e1pido e n\u00e3o persiste os dados entre execu\u00e7\u00f5es de testes. Para configurar o ambiente de banco de dados de teste e escrever testes que interagem com o banco de dados, siga as etapas abaixo:<\/p>\n<ol start=\"1\">\n<li>Abra o arquivo <strong>phpunit.xml<\/strong> e descomente as seguintes linhas de c\u00f3digo:\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>Execute o comando <code>php artisan make:test PostCreationTest --unit<\/code> para criar um novo caso de teste.<\/li>\n<li>Abra o arquivo <strong>tests\/Unit\/PostCreationTest.php <\/strong>e substitua o m\u00e9todo <code>test_example<\/code> pelo c\u00f3digo abaixo:\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>Certifique-se de adicionar a seguinte instru\u00e7\u00e3o <code>use<\/code>:\n<pre><code class=\"language-php\">use App\\Models\\Post;<\/code><\/pre>\n<p>Atualmente, a classe <code>PostCreationTest<\/code> estende a classe base <code>PHPUnitFrameworkTestCase<\/code>. A classe base \u00e9 comumente usada para testes de unidade ao trabalhar com PHPUnit diretamente, fora do Laravel, ou ao escrever testes para um componente n\u00e3o firmemente acoplado ao Laravel. No entanto, voc\u00ea precisa acessar o banco de dados, o que significa que deve modificar a classe <code>PostCreationTest<\/code> para estender a classe <code>TestsTestCase<\/code>.<\/p>\n<p>Essa \u00faltima classe adapta a classe <code>PHPUnitFrameworkTestCase<\/code> aos aplicativos Laravel. Ela fornece funcionalidade adicional e configura\u00e7\u00e3o espec\u00edfica do Laravel, como a propaga\u00e7\u00e3o do banco de dados e a configura\u00e7\u00e3o do ambiente de teste.<\/li>\n<li>Certifique-se de substituir a instru\u00e7\u00e3o <code>use PHPUnitFrameworkTestCase;<\/code> por <code>use TestsTestCase;<\/code>. Lembre-se de que voc\u00ea definiu o ambiente de teste para usar um banco de dados SQLite in-memory. Ent\u00e3o voc\u00ea deve migrar o banco de dados antes de executar os testes. Use a funcionalidade <code>IlluminateFoundationTestingRefreshDatabase<\/code> para fazer isso. Essa funcionalidade migra o banco de dados se o schema n\u00e3o estiver atualizado e redefine o banco de dados ap\u00f3s cada teste para garantir que os dados do teste anterior n\u00e3o interfiram nos testes subsequentes.<\/li>\n<li>Adicione a seguinte instru\u00e7\u00e3o <code>use<\/code> ao arquivo <strong>tests\/Unit\/PostCreationTest.php <\/strong>para incorporar essa funcionalidade em seu c\u00f3digo:\n<pre><code class=\"language-php\">use Illuminate\\Foundation\\Testing\\RefreshDatabase;<\/code><\/pre>\n<\/li>\n<li>Em seguida, adicione a seguinte linha de c\u00f3digo logo antes do m\u00e9todo <code>testPostCreation<\/code>:\n<pre><code class=\"language-php\">use RefreshDatabase;<\/code><\/pre>\n<\/li>\n<li>Execute o comando <code>php artisan config:clear<\/code> para limpar o cache de configura\u00e7\u00e3o.<\/li>\n<li>Para executar esse teste, execute o seguinte comando:\n<pre><code class=\"language-php\">php artisan test tests\/Unit\/PostCreationTest.php<\/code><\/pre>\n<p>Os testes devem ser aprovados e o terminal deve exibir os resultados do teste e o tempo total de teste.<\/li>\n<\/ol>\n<h2>Teste de recursos<\/h2>\n<p>Enquanto os testes de unidade verificam componentes individuais do aplicativo isoladamente, os testes de recursos verificam partes maiores do c\u00f3digo, como a intera\u00e7\u00e3o entre v\u00e1rios objetos. O teste de recursos \u00e9 vital por v\u00e1rios motivos:<\/p>\n<ol start=\"1\">\n<li><strong>Valida\u00e7\u00e3o de ponta a ponta<\/strong> \u2014 Confirma que todo o recurso funciona perfeitamente, incluindo as intera\u00e7\u00f5es entre v\u00e1rios componentes, como controladores, modelos, exibi\u00e7\u00f5es e at\u00e9 mesmo o banco de dados.<\/li>\n<li><strong>Teste de ponta a ponta<\/strong> \u2014 Abrange todo o fluxo do usu\u00e1rio, desde a solicita\u00e7\u00e3o inicial at\u00e9 a resposta final, o que pode revelar problemas que os testes de unidade talvez n\u00e3o detectem. Essa capacidade os torna valiosos para testar jornadas de usu\u00e1rios e cen\u00e1rios complexos.<\/li>\n<li><strong>Garantia da experi\u00eancia do usu\u00e1rio<\/strong> \u2014 Simula intera\u00e7\u00f5es de usu\u00e1rio, ajudando a verificar se a experi\u00eancia do usu\u00e1rio \u00e9 consistente e se o recurso funciona como pretendido.<\/li>\n<li><strong>Detec\u00e7\u00e3o de regress\u00e3o<\/strong> \u2014 Detecta regress\u00f5es e altera\u00e7\u00f5es que quebram o c\u00f3digo ao introduzir um novo c\u00f3digo. Se um recurso existente come\u00e7ar a falhar em um teste de recurso, isso indica que algo foi danificado.<\/li>\n<\/ol>\n<p>Agora, crie um teste de recurso para <code>PostController<\/code> no arquivo <strong>app\/Http\/Controllers\/PostController.php<\/strong>. Concentre-se no m\u00e9todo <code>store<\/code>, validando os dados de entrada e criando e armazenando publica\u00e7\u00f5es no banco de dados.<\/p>\n<p>O teste simula um usu\u00e1rio criando uma nova publica\u00e7\u00e3o por meio de uma interface web, garantindo que o c\u00f3digo armazene a publica\u00e7\u00e3o no banco de dados e redirecione o usu\u00e1rio para a p\u00e1gina \u00cdndice de Publica\u00e7\u00f5es ap\u00f3s a cria\u00e7\u00e3o. Para fazer isso, siga estas etapas:<\/p>\n<ol start=\"1\">\n<li>Execute o comando <code>php artisan make:test PostControllerTest<\/code> para criar um novo caso de teste no diret\u00f3rio <strong>tests\/Feature<\/strong>.<\/li>\n<li>Abra o arquivo <strong>tests\/Feature\/PostControllerTest.php<\/strong> e substitua o m\u00e9todo <code>test_example<\/code> por este c\u00f3digo:\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>A fun\u00e7\u00e3o <code>test_create_post<\/code> simula um usu\u00e1rio criando uma nova publica\u00e7\u00e3o fazendo uma solicita\u00e7\u00e3o <code>POST<\/code> para a rota <code>posts.store<\/code> com atributos espec\u00edficos, incluindo uma imagem simulada gerada usando a classe <code>UploadedFile<\/code> do Laravel.<\/p>\n<p>Em seguida, o teste afirma que o c\u00f3digo armazenou com \u00eaxito a publica\u00e7\u00e3o no banco de dados, verificando a contagem de <code>Post::all()<\/code>. E verifica que o c\u00f3digo redireciona o usu\u00e1rio para a p\u00e1gina \u00cdndice de Publica\u00e7\u00f5es ap\u00f3s a cria\u00e7\u00e3o da publica\u00e7\u00e3o.<\/p>\n<p>Esse teste garante que a funcionalidade de cria\u00e7\u00e3o de publica\u00e7\u00e3o funciona e que o aplicativo lida corretamente com as intera\u00e7\u00f5es e redirecionamentos do banco de dados ap\u00f3s o envio de uma publica\u00e7\u00e3o.<\/li>\n<li>Adicione as seguintes instru\u00e7\u00f5es <code>use<\/code> ao mesmo arquivo:\n<pre><code class=\"language-php\">use App\\Models\\Post;\nuse Illuminate\\Http\\UploadedFile;<\/code><\/pre>\n<\/li>\n<li>Execute o comando <code>php artisan config:clear<\/code> para limpar o cache de configura\u00e7\u00e3o.<\/li>\n<li>Para executar esse teste, d\u00ea este comando:\n<pre><code class=\"language-php\">php artisan test tests\/Feature\/PostControllerTest.php<\/code><\/pre>\n<p>O teste deve ser aprovado e o terminal deve mostrar os resultados do teste e o tempo total de execu\u00e7\u00e3o do teste.<\/li>\n<\/ol>\n<h2>Confirme a cobertura do teste<\/h2>\n<p>A cobertura do teste refere-se \u00e0 quantidade da base de c\u00f3digo que os testes de unidade, recurso ou navegador verificam, expressa como uma porcentagem. Ela o ajuda a identificar \u00e1reas n\u00e3o testadas na base de c\u00f3digo e \u00e1reas subtestadas que podem conter bugs.<\/p>\n<p>Ferramentas como o recurso de cobertura de c\u00f3digo do PHPUnit e o relat\u00f3rio de cobertura integrado do Laravel geram relat\u00f3rios que mostram quais partes da sua base de c\u00f3digo os testes cobrem. Esse processo fornece informa\u00e7\u00f5es cr\u00edticas sobre a qualidade dos seus testes e ajuda voc\u00ea a se concentrar nas \u00e1reas que podem exigir testes adicionais.<\/p>\n<h3>Gere um relat\u00f3rio<\/h3>\n<ol start=\"1\">\n<li>Exclua os arquivos <strong>tests\/Feature\/ExampleTest.php<\/strong> e <strong>tests\/Unit\/ExampleTest.php<\/strong>, pois voc\u00ea n\u00e3o os modificou e eles podem causar erros.<\/li>\n<li>Execute o comando <code>php artisan test --coverage<\/code> em uma janela de terminal. Voc\u00ea deve receber um resultado como o seguinte:\n<figure style=\"width: 1001px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2024\/03\/code-coverage-report.png\" alt=\"Execu\u00e7\u00e3o do comando php artisan test --coverage.\" width=\"1001\" height=\"471\"><figcaption class=\"wp-caption-text\">Execu\u00e7\u00e3o do comando php artisan test &#8211;coverage.<\/figcaption><\/figure>\n<p>O relat\u00f3rio de cobertura de c\u00f3digo mostra os resultados do teste, o n\u00famero total de testes aprovados e o tempo para executar os resultados. Tamb\u00e9m lista cada componente em sua base de c\u00f3digo e sua porcentagem de cobertura de c\u00f3digo. As porcentagens representam a propor\u00e7\u00e3o do c\u00f3digo que seus testes cobrem.<\/p>\n<p>Por exemplo, <code>Models\/Post<\/code> tem 100% de cobertura, o que significa que todos os m\u00e9todos e linhas de c\u00f3digo do modelo s\u00e3o cobertos. O relat\u00f3rio de cobertura de c\u00f3digo tamb\u00e9m exibe <strong>Total <\/strong><strong>Coverage <\/strong>\u2014 a cobertura geral do c\u00f3digo para toda a base de c\u00f3digo. Neste caso, os testes cobriram apenas <strong>65,3%<\/strong> do c\u00f3digo.<\/li>\n<li>Para especificar um limite m\u00ednimo de cobertura, execute o comando <code>php artisan test --coverage --min=85<\/code>. Esse comando define um limite m\u00ednimo de 85%. Voc\u00ea deve receber a seguinte sa\u00edda:\n<figure style=\"width: 1001px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2024\/03\/coverage-report-with-minimum.png\" alt=\"Teste com limite m\u00ednimo de 85%.\" width=\"1001\" height=\"471\"><figcaption class=\"wp-caption-text\">Teste com limite m\u00ednimo de 85%.<\/figcaption><\/figure>\n<p>As su\u00edtes de teste falham porque o c\u00f3digo n\u00e3o atende ao limite m\u00ednimo definido de 85%.<\/p>\n<p>Embora a meta seja uma cobertura de c\u00f3digo mais alta, geralmente de 100%, o mais importante \u00e9 testar minuciosamente as partes cr\u00edticas e complexas do seu aplicativo.<\/li>\n<\/ol>\n<h2>Resumo<\/h2>\n<p>Ao adotar as pr\u00e1ticas recomendadas descritas neste artigo, como escrever testes significativos e abrangentes, e aderir ao ciclo vermelho-verde-refatorar no TDD, aproveitando os recursos de teste fornecidos pelo Laravel e pelo PHPUnit, voc\u00ea pode criar aplicativos robustos e de alta qualidade.<\/p>\n<p>Al\u00e9m disso, voc\u00ea tem a op\u00e7\u00e3o de <a href=\"https:\/\/sevalla.com\/application-hosting\/\">hospedar seu aplicativo Laravel<\/a> com a infraestrutura r\u00e1pida, segura e confi\u00e1vel da Kinsta. Al\u00e9m disso, voc\u00ea pode utilizar a <a href=\"https:\/\/api-docs.kinqsta.com\/tag\/Application-Deployments#operation\/manualDeployApplication\" target=\"_blank\" rel=\"noopener noreferrer\">API da Kinsta<\/a> para iniciar <a href=\"https:\/\/kinqsta.com\/pt\/blog\/como-configurar-pipeline-ci-cd\/\">implanta\u00e7\u00f5es em seus pipelines de CI\/CD<\/a> por meio de plataformas como GitHub Actions, <a href=\"https:\/\/kinqsta.com\/pt\/blog\/implantacao-continua-react\/\">CircleCI<\/a> e muito mais.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>O teste de unidade \u00e9 fundamental no desenvolvimento de software, garantindo que os componentes do aplicativo funcionem isoladamente conforme o esperado. Ao escrever testes para unidades &#8230;<\/p>\n","protected":false},"author":199,"featured_media":67729,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[990,984],"class_list":["post-67728","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-banco-de-dados-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>N\u00e3o Ignore os Testes de Unidade e Crie Aplicativos Laravel Melhores - Kinsta\u00ae<\/title>\n<meta name=\"description\" content=\"Este artigo destaca a import\u00e2ncia dos testes de unidade em aplicativos Laravel e como testes s\u00e3o cruciais no desenvolvimento de 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:\/\/kinqsta.com\/pt\/blog\/testes-unidade-laravel\/\" \/>\n<meta property=\"og:locale\" content=\"pt_PT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"N\u00e3o Ignore os Testes de Unidade e Crie Aplicativos Laravel Melhores\" \/>\n<meta property=\"og:description\" content=\"Este artigo destaca a import\u00e2ncia dos testes de unidade em aplicativos Laravel e como testes s\u00e3o cruciais no desenvolvimento de software.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinqsta.com\/pt\/blog\/testes-unidade-laravel\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinstapt\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-03-19T08:26:11+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-03-22T21:59:15+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/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=\"Este artigo destaca a import\u00e2ncia dos testes de unidade em aplicativos Laravel e como testes s\u00e3o cruciais no desenvolvimento de software.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2024\/03\/laravel-unit-testing.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@kinsta_pt\" \/>\n<meta name=\"twitter:site\" content=\"@kinsta_pt\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jeremy Holcombe\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo estimado de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"14 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinqsta.com\/pt\/blog\/testes-unidade-laravel\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinqsta.com\/pt\/blog\/testes-unidade-laravel\/\"},\"author\":{\"name\":\"Jeremy Holcombe\",\"@id\":\"https:\/\/kinqsta.com\/pt\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21\"},\"headline\":\"N\u00e3o Ignore os Testes de Unidade e Crie Aplicativos Laravel Melhores\",\"datePublished\":\"2024-03-19T08:26:11+00:00\",\"dateModified\":\"2024-03-22T21:59:15+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinqsta.com\/pt\/blog\/testes-unidade-laravel\/\"},\"wordCount\":2930,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinqsta.com\/pt\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinqsta.com\/pt\/blog\/testes-unidade-laravel\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2024\/03\/laravel-unit-testing.jpg\",\"inLanguage\":\"pt-PT\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinqsta.com\/pt\/blog\/testes-unidade-laravel\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinqsta.com\/pt\/blog\/testes-unidade-laravel\/\",\"url\":\"https:\/\/kinqsta.com\/pt\/blog\/testes-unidade-laravel\/\",\"name\":\"N\u00e3o Ignore os Testes de Unidade e Crie Aplicativos Laravel Melhores - Kinsta\u00ae\",\"isPartOf\":{\"@id\":\"https:\/\/kinqsta.com\/pt\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinqsta.com\/pt\/blog\/testes-unidade-laravel\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinqsta.com\/pt\/blog\/testes-unidade-laravel\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2024\/03\/laravel-unit-testing.jpg\",\"datePublished\":\"2024-03-19T08:26:11+00:00\",\"dateModified\":\"2024-03-22T21:59:15+00:00\",\"description\":\"Este artigo destaca a import\u00e2ncia dos testes de unidade em aplicativos Laravel e como testes s\u00e3o cruciais no desenvolvimento de software.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinqsta.com\/pt\/blog\/testes-unidade-laravel\/#breadcrumb\"},\"inLanguage\":\"pt-PT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinqsta.com\/pt\/blog\/testes-unidade-laravel\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-PT\",\"@id\":\"https:\/\/kinqsta.com\/pt\/blog\/testes-unidade-laravel\/#primaryimage\",\"url\":\"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2024\/03\/laravel-unit-testing.jpg\",\"contentUrl\":\"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2024\/03\/laravel-unit-testing.jpg\",\"width\":1460,\"height\":730},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinqsta.com\/pt\/blog\/testes-unidade-laravel\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinqsta.com\/pt\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Laravel\",\"item\":\"https:\/\/kinqsta.com\/pt\/topicos\/laravel\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"N\u00e3o Ignore os Testes de Unidade e Crie Aplicativos Laravel Melhores\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinqsta.com\/pt\/#website\",\"url\":\"https:\/\/kinqsta.com\/pt\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Solu\u00e7\u00f5es de hospedagem Premium, r\u00e1pida e segura\",\"publisher\":{\"@id\":\"https:\/\/kinqsta.com\/pt\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinqsta.com\/pt\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-PT\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinqsta.com\/pt\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinqsta.com\/pt\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-PT\",\"@id\":\"https:\/\/kinqsta.com\/pt\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinqsta.com\/pt\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinstapt\/\",\"https:\/\/x.com\/kinsta_pt\",\"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:\/\/kinqsta.com\/pt\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21\",\"name\":\"Jeremy Holcombe\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-PT\",\"@id\":\"https:\/\/kinqsta.com\/pt\/#\/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:\/\/kinqsta.com\/pt\/blog\/author\/jeremyholcombe\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"N\u00e3o Ignore os Testes de Unidade e Crie Aplicativos Laravel Melhores - Kinsta\u00ae","description":"Este artigo destaca a import\u00e2ncia dos testes de unidade em aplicativos Laravel e como testes s\u00e3o cruciais no desenvolvimento de 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:\/\/kinqsta.com\/pt\/blog\/testes-unidade-laravel\/","og_locale":"pt_PT","og_type":"article","og_title":"N\u00e3o Ignore os Testes de Unidade e Crie Aplicativos Laravel Melhores","og_description":"Este artigo destaca a import\u00e2ncia dos testes de unidade em aplicativos Laravel e como testes s\u00e3o cruciais no desenvolvimento de software.","og_url":"https:\/\/kinqsta.com\/pt\/blog\/testes-unidade-laravel\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinstapt\/","article_published_time":"2024-03-19T08:26:11+00:00","article_modified_time":"2024-03-22T21:59:15+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2024\/03\/laravel-unit-testing.jpg","type":"image\/jpeg"}],"author":"Jeremy Holcombe","twitter_card":"summary_large_image","twitter_description":"Este artigo destaca a import\u00e2ncia dos testes de unidade em aplicativos Laravel e como testes s\u00e3o cruciais no desenvolvimento de software.","twitter_image":"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2024\/03\/laravel-unit-testing.jpg","twitter_creator":"@kinsta_pt","twitter_site":"@kinsta_pt","twitter_misc":{"Escrito por":"Jeremy Holcombe","Tempo estimado de leitura":"14 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinqsta.com\/pt\/blog\/testes-unidade-laravel\/#article","isPartOf":{"@id":"https:\/\/kinqsta.com\/pt\/blog\/testes-unidade-laravel\/"},"author":{"name":"Jeremy Holcombe","@id":"https:\/\/kinqsta.com\/pt\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21"},"headline":"N\u00e3o Ignore os Testes de Unidade e Crie Aplicativos Laravel Melhores","datePublished":"2024-03-19T08:26:11+00:00","dateModified":"2024-03-22T21:59:15+00:00","mainEntityOfPage":{"@id":"https:\/\/kinqsta.com\/pt\/blog\/testes-unidade-laravel\/"},"wordCount":2930,"commentCount":0,"publisher":{"@id":"https:\/\/kinqsta.com\/pt\/#organization"},"image":{"@id":"https:\/\/kinqsta.com\/pt\/blog\/testes-unidade-laravel\/#primaryimage"},"thumbnailUrl":"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2024\/03\/laravel-unit-testing.jpg","inLanguage":"pt-PT","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinqsta.com\/pt\/blog\/testes-unidade-laravel\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinqsta.com\/pt\/blog\/testes-unidade-laravel\/","url":"https:\/\/kinqsta.com\/pt\/blog\/testes-unidade-laravel\/","name":"N\u00e3o Ignore os Testes de Unidade e Crie Aplicativos Laravel Melhores - Kinsta\u00ae","isPartOf":{"@id":"https:\/\/kinqsta.com\/pt\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinqsta.com\/pt\/blog\/testes-unidade-laravel\/#primaryimage"},"image":{"@id":"https:\/\/kinqsta.com\/pt\/blog\/testes-unidade-laravel\/#primaryimage"},"thumbnailUrl":"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2024\/03\/laravel-unit-testing.jpg","datePublished":"2024-03-19T08:26:11+00:00","dateModified":"2024-03-22T21:59:15+00:00","description":"Este artigo destaca a import\u00e2ncia dos testes de unidade em aplicativos Laravel e como testes s\u00e3o cruciais no desenvolvimento de software.","breadcrumb":{"@id":"https:\/\/kinqsta.com\/pt\/blog\/testes-unidade-laravel\/#breadcrumb"},"inLanguage":"pt-PT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinqsta.com\/pt\/blog\/testes-unidade-laravel\/"]}]},{"@type":"ImageObject","inLanguage":"pt-PT","@id":"https:\/\/kinqsta.com\/pt\/blog\/testes-unidade-laravel\/#primaryimage","url":"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2024\/03\/laravel-unit-testing.jpg","contentUrl":"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2024\/03\/laravel-unit-testing.jpg","width":1460,"height":730},{"@type":"BreadcrumbList","@id":"https:\/\/kinqsta.com\/pt\/blog\/testes-unidade-laravel\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinqsta.com\/pt\/"},{"@type":"ListItem","position":2,"name":"Laravel","item":"https:\/\/kinqsta.com\/pt\/topicos\/laravel\/"},{"@type":"ListItem","position":3,"name":"N\u00e3o Ignore os Testes de Unidade e Crie Aplicativos Laravel Melhores"}]},{"@type":"WebSite","@id":"https:\/\/kinqsta.com\/pt\/#website","url":"https:\/\/kinqsta.com\/pt\/","name":"Kinsta\u00ae","description":"Solu\u00e7\u00f5es de hospedagem Premium, r\u00e1pida e segura","publisher":{"@id":"https:\/\/kinqsta.com\/pt\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinqsta.com\/pt\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-PT"},{"@type":"Organization","@id":"https:\/\/kinqsta.com\/pt\/#organization","name":"Kinsta","url":"https:\/\/kinqsta.com\/pt\/","logo":{"@type":"ImageObject","inLanguage":"pt-PT","@id":"https:\/\/kinqsta.com\/pt\/#\/schema\/logo\/image\/","url":"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinqsta.com\/pt\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinstapt\/","https:\/\/x.com\/kinsta_pt","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:\/\/kinqsta.com\/pt\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21","name":"Jeremy Holcombe","image":{"@type":"ImageObject","inLanguage":"pt-PT","@id":"https:\/\/kinqsta.com\/pt\/#\/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:\/\/kinqsta.com\/pt\/blog\/author\/jeremyholcombe\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinqsta.com\/pt\/wp-json\/wp\/v2\/posts\/67728","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinqsta.com\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinqsta.com\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinqsta.com\/pt\/wp-json\/wp\/v2\/users\/199"}],"replies":[{"embeddable":true,"href":"https:\/\/kinqsta.com\/pt\/wp-json\/wp\/v2\/comments?post=67728"}],"version-history":[{"count":8,"href":"https:\/\/kinqsta.com\/pt\/wp-json\/wp\/v2\/posts\/67728\/revisions"}],"predecessor-version":[{"id":67765,"href":"https:\/\/kinqsta.com\/pt\/wp-json\/wp\/v2\/posts\/67728\/revisions\/67765"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinqsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/67728\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinqsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/67728\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinqsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/67728\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinqsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/67728\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinqsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/67728\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinqsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/67728\/translations\/jp"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinqsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/67728\/translations\/nl"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinqsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/67728\/translations\/es"},{"href":"https:\/\/kinqsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/67728\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinqsta.com\/pt\/wp-json\/wp\/v2\/media\/67729"}],"wp:attachment":[{"href":"https:\/\/kinqsta.com\/pt\/wp-json\/wp\/v2\/media?parent=67728"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinqsta.com\/pt\/wp-json\/wp\/v2\/tags?post=67728"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinqsta.com\/pt\/wp-json\/wp\/v2\/topic?post=67728"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}