Поиск…


Вступление

Написание тестируемого кода является важной частью создания надежного, удобного и гибкого проекта. Поддержка самой широко используемой структуры PHP PHPUnit построена прямо в Laravel. PHPUnit настроен с использованием файла phpunit.xml , который находится в корневом каталоге каждого нового приложения Laravel.

Каталог tests , также в корневом каталоге, содержит отдельные файлы тестирования, которые содержат логику тестирования каждой части вашего приложения. Разумеется, именно ваша ответственность за разработку этих тестов заключается в том, что вы создаете свое приложение, но Laravel включает примерный файл ExampleTest.php , чтобы вы ExampleTest.php .

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

В testBasicExample() мы testBasicExample() на страницу индекса сайта и удостоверяемся, что мы видим текст Laravel 5 где-то на этой странице. Если текст отсутствует, тест завершится с ошибкой и вызовет ошибку.

Тест без промежуточного программного обеспечения и новая база данных

Чтобы заставить ремесленника перенести новую базу данных перед запуском тестов, use DatabaseMigrations . Кроме того, если вы хотите избежать промежуточного программного обеспечения, такого как 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');
    }
}

Операции с базами данных для подключения к нескольким базам данных

DatabaseTransactions trait позволяет базам откатить все изменения во время тестов. Если вы хотите откатить несколько баз данных, вам нужно установить $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');
    }
}

Настройка тестирования, использование в базе данных памяти

После установки убедитесь, что среда тестирования (PHPUnit) использует :memory: database.

конфиг / 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>

конфигурация

Файл phpunit.xml является конфигурационным файлом по умолчанию для тестов и уже настроен для тестирования с помощью PHPUnit.

Стандартная среда тестирования APP_ENV определяется как testing с array являющимся драйвером кэша CACHE_DRIVER . При этой настройке никакие данные (сеанс / кеш) не будут сохранены во время тестирования.

Для запуска тестов в отношении определенной среды, такой как усадьба, значения по умолчанию могут быть изменены на:

<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"/>

Или использовать временную базу данных памяти :

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

Последнее примечание, которое следует учитывать в документации Laravel :

Обязательно очистите кеш конфигурации, используя команду config:clear Artisan перед запуском тестов!



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow