Тестирование: начало работы
12.x.
Почему это важно?
Введение
Laravel построен с учётом тестирования. Фактически, поддержка PHPUnit доступна по умолчанию, а файл phpunit.xml уже настроен для вашего приложения. Также фреймворк содержит удобные методы для полноценного тестирования ваших приложений.
По умолчанию в директории tests вашего приложения содержатся две директории: Feature и Unit. Юнит-тесты – тесты, которые концентрируются на очень маленькой, изолированной части вашего кода. Фактически, большинство юнит-тестов скорее всего сосредоточены на одном методе. Функциональные тесты могут тестировать большую часть вашего кода, включая то, как несколько объектов взаимодействуют друг с другом или даже полный HTTP-запрос конечной точке JSON.
Файл ExampleTest.php расположен в обоих тестовых директориях: в Feature и в Unit. Поле установки нового приложения Laravel просто выполните phpunit в командной строке, чтобы запустить свои тесты.
Среда
При выполнении тестов через phpunit, Laravel автоматически задаст настройки среды testing из-за переменных среды, определенных в файле phpunit.xml. Laravel также автоматически настроит сессии и кэш на драйвер array во время тестирования, а значит данные сессий и кэша не сохранятся при тестировании.
При необходимости вы можете создать другие настройки для тестовой среды. Переменные среды testing можно настроить в файле phpunit.xml, но перед запуском тестов не забудьте очистить кэш настроек с помощью Artisan-команды config:clear!
Создание и выполнение тестов
Для создания нового тест-кейса используйте Artisan-команду make:test:
// Создать тест в директории Feature...
php artisan make:test UserTest
// Создать тест в директории Unit...
php artisan make:test UserTest --unit
Как только был сгенерирован тест, вы можете задать методы теста так, как сделали бы это при обычном использовании PHPUnit. Просто выполните команду phpunit в терминале, чтобы запустить тесты:
<?php
namespace Tests\Unit;
use Tests\TestCase;
use Illuminate\Foundation\Testing\DatabaseMigrations;
use Illuminate\Foundation\Testing\DatabaseTransactions;
class ExampleTest extends TestCase
{
/**
* Пример теста.
*
* @return void
*/
public function testBasicTest()
{
$this->assertTrue(true);
}
}
Если вы определили собственный метод
setUpв классе теста, не забудьте вызватьparent::setUp().