Тестирование: начало работы
11.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()
.