Ricerca…


introduzione

Scrivere un codice verificabile è una parte importante della costruzione di un progetto robusto, manutenibile e agile. Il supporto per PHP, il framework di test più diffuso, PHPUnit , è integrato direttamente in Laravel. PHPUnit è configurato utilizzando il file phpunit.xml , che risiede nella directory radice di ogni nuova applicazione Laravel.

La directory dei tests , anche nella directory root, contiene i singoli file di test che contengono la logica per testare ogni parte della tua applicazione. Ovviamente, è responsabilità dell'utente come sviluppatore scrivere questi test mentre costruisci la tua applicazione, ma Laravel include un file di esempio, ExampleTest.php , per aiutarti.

<?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');
    }
}

Nel metodo testBasicExample() , visitiamo la pagina dell'indice del sito e ci assicuriamo di vedere il testo Laravel 5 da qualche parte su quella pagina. Se il testo non è presente, il test fallirà e genererà un errore.

Test senza middleware e con un nuovo database

Per rendere artigianale la migrazione di un nuovo database prima dell'esecuzione dei test, use DatabaseMigrations . Inoltre, se vuoi evitare il middleware come 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');
    }
}

Transazioni di database per connessione a più server

DatabaseTransactions tratto DatabaseTransactions consente ai database di eseguire il rollback di tutte le modifiche durante i test. Se si desidera eseguire il rollback di più database, è necessario impostare $connectionsToTransact properties

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');
    }
}

Test di installazione, utilizzando nel database di memoria

La seguente installazione assicura che il framework di test (PHPUnit) usi :memory: database.

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>

Configurazione

Il file phpunit.xml è il file di configurazione predefinito per i test ed è già configurato per il test con PHPUnit.

L'ambiente di test predefinito APP_ENV è definito come testing con array rappresenta il driver cache CACHE_DRIVER . Con questa configurazione, nessun dato (sessione / cache) verrà mantenuto durante il test.

Per eseguire test su un ambiente specifico come homestead, i valori predefiniti possono essere modificati in:

<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 per utilizzare un database temporaneo in memoria :

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

Un'ultima nota da tenere a mente dalla documentazione di Laravel :

Assicurati di svuotare la cache di configurazione usando la config:clear comando Artisan prima di eseguire i test!



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow