Zoeken…


Invoering

Het schrijven van testbare code is een belangrijk onderdeel van het bouwen van een robuust, onderhoudbaar en wendbaar project. Ondersteuning voor PHP's meest gebruikte testraamwerk , PHPUnit , is ingebouwd in Laravel. PHPUnit wordt geconfigureerd met behulp van het bestand phpunit.xml , dat zich in de hoofdmap van elke nieuwe Laravel-toepassing bevindt.

De tests , ook in de hoofdmap, bevat de afzonderlijke testbestanden die de logica bevatten voor het testen van elk gedeelte van uw toepassing. Natuurlijk is het uw verantwoordelijkheid als ontwikkelaar om deze tests te schrijven terwijl u uw applicatie bouwt, maar Laravel bevat een voorbeeldbestand, ExampleTest.php , om u op weg te helpen.

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

In de methode testBasicExample() bezoeken we de indexpagina van de site en zorgen we ervoor dat we de tekst Laravel 5 ergens op die pagina zien. Als de tekst niet aanwezig is, zal de test mislukken en een fout genereren.

Test zonder middleware en met een nieuwe database

use DatabaseMigrations om artisanaal een nieuwe database te laten migreren voordat tests worden uitgevoerd. Als je middleware zoals Auth wilt vermijden, 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');
    }
}

Databasetransacties voor meervoudige databaseverbinding

DatabaseTransactions eigenschap kunnen databases alle wijzigingen ongedaan maken tijdens de tests. Als u meerdere databases wilt terugdraaien, moet $connectionsToTransact eigenschappen $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');
    }
}

Testopstelling, gebruik in geheugendatabase

De volgende installatie zorgt ervoor dat het testraamwerk (PHPUnit) gebruikt :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>

Configuratie

Het phpunit.xml- bestand is het standaard configuratiebestand voor tests en is al ingesteld voor testen met PHPUnit.

De standaard testomgeving APP_ENV is gedefinieerd als testing met array als CACHE_DRIVER . Met deze instelling worden tijdens het testen geen gegevens (sessie / cache) bewaard.

Om tests uit te voeren tegen een specifieke omgeving zoals homestead, kunnen de standaardwaarden worden gewijzigd 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"/>

Of om een tijdelijke in de geheugendatabase te gebruiken:

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

Een laatste opmerking om in gedachten te houden uit de Laravel-documentatie :

Zorg ervoor dat u uw configuratiecache leegmaakt met de opdracht config:clear Artisan voordat u uw tests uitvoert!



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow