Класс Storage
Класс Storage в контексте тестирования Laravel
предоставляет удобные инструменты для эмуляции файловых
систем и проверки взаимодействия приложения с файлами.
Основной метод fake позволяет создать виртуальную
файловую систему, которая не взаимодействует с реальным
диском. Это делает тесты быстрее и изолирует их от
внешних факторов. Класс также предоставляет методы
для проверки существования файлов и директорий в
эмулируемой файловой системе.
Метод fake - создание виртуальной файловой системы
Метод fake создаёт эмуляцию диска для тестирования.
В качестве первого параметра принимает имя диска,
которое должно быть определено в конфигурационном
файле filesystems.php. Вторым параметром можно
передать массив конфигурации для эмуляции.
<?php
Storage::fake('local');
?>
Пример
Давайте создадим эмуляцию диска и проверим, что файл успешно сохранился в виртуальной системе:
<?php
namespace Tests\Unit;
use Illuminate\Support\Facades\Storage;
use Tests\TestCase;
class StorageTest extends TestCase
{
public function test_file_is_stored()
{
Storage::fake('local');
$res = Storage::disk('local')->put('file.txt', 'content');
Storage::disk('local')->assertExists('file.txt');
$this->assertTrue($res);
}
}
?>
Результат выполнения кода:
"true"
Пример
Эмуляция позволяет изолировать тесты от реальной файловой системы. В этом примере мы сохраняем файл в виртуальную систему и проверяем, что он не попал на реальный диск:
<?php
namespace Tests\Unit;
use Illuminate\Support\Facades\Storage;
use Tests\TestCase;
class StorageIsolationTest extends TestCase
{
public function test_isolation_from_real_filesystem()
{
Storage::fake('local');
Storage::disk('local')->put('test.txt', 'data');
$realExists = file_exists(storage_path('app/test.txt'));
$this->assertFalse($realExists);
}
}
?>
Результат выполнения кода:
"false"
Метод assertExists - проверка существования файла
Метод assertExists проверяет, что файл или
директория существуют в эмулируемой файловой системе.
Принимает имя файла или директории в качестве
аргумента. Метод используется внутри тестовых
методов для верификации операций с файлами.
<?php
Storage::disk('local')->assertExists('path/to/file.txt');
?>
Пример
Проверим существование нескольких файлов после их сохранения в виртуальной файловой системе:
<?php
namespace Tests\Unit;
use Illuminate\Support\Facades\Storage;
use Tests\TestCase;
class StorageAssertTest extends TestCase
{
public function test_multiple_files_exist()
{
Storage::fake('local');
$disk = Storage::disk('local');
$disk->put('file1.txt', 'content 1');
$disk->put('file2.txt', 'content 2');
$disk->put('file3.txt', 'content 3');
$disk->assertExists('file1.txt');
$disk->assertExists('file2.txt');
$disk->assertExists('file3.txt');
$this->assertTrue(true);
}
}
?>
Результат выполнения кода:
"true"
Смотрите также
-
метод
fake,
который создаёт виртуальную файловую систему для тестов -
метод
assertExists,
который проверяет существование файла в эмуляции -
класс
TestCase,
который является базовым для всех тестов Laravel -
метод
setUp,
который выполняется перед каждым тестовым методом