Buscar..


Introducción

Escribir códigos comprobables es una parte importante de la construcción de un proyecto robusto, fácil de mantener y ágil. El soporte para el marco de pruebas más utilizado de PHP, PHPUnit , está integrado directamente en Laravel. PHPUnit se configura mediante el archivo phpunit.xml , que reside en el directorio raíz de cada nueva aplicación Laravel.

El directorio de tests , también en el directorio raíz, contiene los archivos de prueba individuales que contienen la lógica para probar cada parte de su aplicación. Por supuesto, es tu responsabilidad como desarrollador escribir estas pruebas a medida que construyes tu aplicación, pero Laravel incluye un archivo de ejemplo, ExampleTest.php , para ponerte en marcha.

<?php

use Illuminate\Foundation\Testing\WithoutMiddleware;
use Illuminate\Foundation\Testing\DatabaseMigrations;
use Illuminate\Foundation\Testing\DatabaseTransactions;

class ExampleTest extends TestCase
{
    /**
     * A basic functional test example.
     *
     * @return void
     */
    public function testBasicExample()
    {
        $this->visit('/')
             ->see('Laravel 5');
    }
}

En el método testBasicExample() , visitamos la página de índice del sitio y nos aseguramos de ver el texto Laravel 5 algún lugar de esa página. Si el texto no está presente, la prueba fallará y generará un error.

Prueba sin middleware y con una base de datos nueva.

Para hacer que los artesanos migren una base de datos nueva antes de ejecutar pruebas, use DatabaseMigrations . Además, si desea evitar el middleware como Auth, use WithoutMiddleware .

<?php

use Illuminate\Foundation\Testing\WithoutMiddleware;
use Illuminate\Foundation\Testing\DatabaseMigrations;

class ExampleTest extends TestCase
{
    use DatabaseMigrations, WithoutMiddleware;

    /**
     * A basic functional test example.
     *
     * @return void
     */
    public function testExampleIndex()
    {
        $this->visit('/protected-page')
         ->see('All good');
    }
}

Transacciones de base de datos para conexión de base de datos mutliple

DatabaseTransactions rasgo DatabaseTransactions permite a las bases de datos revertir todo el cambio durante las pruebas. Si desea revertir varias bases de datos, debe establecer $connectionsToTransact propiedades $connectionsToTransact

use Illuminate\Foundation\Testing\DatabaseMigrations;

class ExampleTest extends TestCase
{
     use DatabaseTransactions;

     $connectionsToTransact =["mysql","sqlite"] //tell Laravel which database need to rollBack

    public function testExampleIndex()
    {
        $this->visit('/action/parameter')
         ->see('items');
    }
}

Configuración de prueba, utilizando en la base de datos de memoria

La siguiente configuración garantiza que el marco de prueba (PHPUnit) utiliza :memory: base de datos.

config / database.php

'connections' => [

    'sqlite_testing' => [
        'driver'   => 'sqlite',
        'database' => ':memory:',
        'prefix'   => '',
    ],
    .
    .
    .

./phpunit.xml

    .
    .
    .
    </filter>
    <php>
        <env name="APP_ENV" value="testing"/>
        <env name="APP_URL" value="http://example.dev"/>
        <env name="CACHE_DRIVER" value="array"/>
        <env name="SESSION_DRIVER" value="array"/>
        <env name="QUEUE_DRIVER" value="sync"/>
        <env name="DB_CONNECTION" value="sqlite_testing"/>
    </php>
</phpunit>

Configuración

El archivo phpunit.xml es el archivo de configuración predeterminado para las pruebas y ya está configurado para las pruebas con PHPUnit.

El entorno de prueba predeterminado APP_ENV se define como testing con una array es el controlador de caché CACHE_DRIVER . Con esta configuración, no se retendrán datos (sesión / caché) durante la prueba.

Para ejecutar pruebas en un entorno específico como homestead, los valores predeterminados se pueden cambiar a:

<env name="DB_HOST" value="192.168.10.10"/>
<env name="DB_DATABASE" value="homestead"/>
<env name="DB_USERNAME" value="homestead"/>
<env name="DB_PASSWORD" value="secret"/>

O para usar una base de datos temporal en la memoria :

<env name="DB_CONNECTION" value="sqlite"/>
<env name="DB_DATABASE" value=":memory:"/>

Una última nota a tener en cuenta a partir de la documentación de Laravel :

¡Asegúrese de borrar su caché de configuración usando el comando config:clear Artisan antes de ejecutar sus pruebas!



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow