РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1175 of 1392 menu

Метод tearDown

Метод tearDown класса TestCase автоматически вызывается после выполнения каждого тестового метода. Он служит для очистки временных файлов, закрытия соединений, сброса глобальных состояний и других операций, необходимых для поддержания чистоты окружения между тестами. В отличие от setUp, который подготавливает окружение перед тестом, tearDown выполняет завершающие действия.

Синтаксис

<?php namespace Tests\Unit; use Tests\TestCase; class ExampleTest extends TestCase { protected function tearDown(): void { // Очистка ресурсов parent::tearDown(); } } ?>

Метод tearDown не принимает параметров и возвращает void. Для корректной работы всегда следует вызывать родительский метод через parent::tearDown, чтобы гарантировать выполнение стандартных очисток Laravel.

Пример

Давайте создадим тестовый файл в setUp и удалим его в tearDown:

<?php namespace Tests\Unit; use Tests\TestCase; use Illuminate\Support\Facades\Storage; class FileTest extends TestCase { protected function setUp(): void { parent::setUp(); Storage::fake('local'); Storage::disk('local')->put('test.txt', 'Hello World'); } protected function tearDown(): void { Storage::disk('local')->delete('test.txt'); parent::tearDown(); } public function test_file_exists(): void { $exists = Storage::disk('local')->exists('test.txt'); $this->assertTrue($exists); $content = Storage::disk('local')->get('test.txt'); $this->assertEquals('Hello World', $content); } } ?>

Результат выполнения теста:

"OK (1 test, 2 assertions)"

Пример

Используем tearDown для очистки глобальной переменной после теста:

<?php namespace Tests\Unit; use Tests\TestCase; class GlobalTest extends TestCase { private $backupGlobal; protected function setUp(): void { parent::setUp(); global $appConfig; $this->backupGlobal = $appConfig; $appConfig = ['debug' => true, 'version' => '1.0']; } protected function tearDown(): void { global $appConfig; $appConfig = $this->backupGlobal; parent::tearDown(); } public function test_global_variable(): void { global $appConfig; $this->assertEquals(['debug' => true, 'version' => '1.0'], $appConfig); $appConfig['debug'] = false; $this->assertEquals(['debug' => false, 'version' => '1.0'], $appConfig); } } ?>

Результат выполнения кода:

"OK (1 test, 2 assertions)"

Пример

Закрываем соединение с базой данных после тестов, использующих отдельное подключение:

<?php namespace Tests\Unit; use Tests\TestCase; use Illuminate\Support\Facades\DB; class DatabaseTest extends TestCase { protected function setUp(): void { parent::setUp(); config(['database.default' => 'secondary']); } protected function tearDown(): void { DB::disconnect('secondary'); parent::tearDown(); } public function test_database_connection(): void { $result = DB::connection('secondary')->select('SELECT 1 as value'); $this->assertCount(1, $result); $this->assertEquals(1, $result[0]->value); } } ?>

Результат выполнения кода:

"OK (1 test, 2 assertions)"

Пример

Очистка кэша и сброс моков после выполнения теста:

<?php namespace Tests\Unit; use Tests\TestCase; use Illuminate\Support\Facades\Cache; use Illuminate\Support\Facades\Config; class CacheTest extends TestCase { protected function setUp(): void { parent::setUp(); Config::set('cache.default', 'array'); } protected function tearDown(): void { Cache::flush(); Config::set('cache.default', env('CACHE_DRIVER', 'file')); parent::tearDown(); } public function test_cache_operations(): void { Cache::put('user', ['name' => 'John', 'age' => 30], 60); $user = Cache::get('user'); $this->assertEquals(['name' => 'John', 'age' => 30], $user); } } ?>

Результат выполнения кода:

"OK (1 test, 1 assertions)"

Смотрите также

  • класс TestCase,
    базовый класс для всех тестов в Laravel
  • метод setUp,
    который подготавливает окружение перед тестом
  • трейт RefreshDatabase,
    который автоматически управляет состоянием базы данных
  • метод assertDatabaseHas,
    который проверяет наличие записи в базе данных
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить