#shopware
Вопрос:
Я создаю модульный тест для функции получения файлов из папки загрузок в общедоступном каталоге. Но в модульном тесте я использую приспособление для пути к тестовым файлам. как я могу создать макет каталога в моей общей функции между креплением и исходным каталогом паба?
Комментарии:
1. Что вы пробовали до сих пор?
Ответ №1:
Взгляните на этот основной тест: ShopwareCITestServiceReleasePrepareServiceTest::setUp
Они используют следующий код для имитации содержимого папок:
public function setUp(): void
{
$this->artifactsFilesystem = new Filesystem(new MemoryAdapter());
[...]
$this->artifactsFilesystem->put('install.zip', random_bytes(1024 * 1024 * 2 11));
$this->artifactsFilesystem->put('install.tar.xz', random_bytes(1024 11));
$this->artifactsFilesystem->put('update.zip', random_bytes(1024 * 1024 13));
}
Модульные тесты создают здесь некоторую файловую систему в памяти и заполняют ее некоторыми файлами со случайными данными.
Я обнаружил это, проверив использование Filesystem
класса в тестовых папках Shopware.
Эта файловая система может быть введена в службу или код, который вы тестируете.
Например:
public function setUp(): void
{
$this->myMockFileSystem = new Filesystem(new MemoryAdapter());
$this->myMockFileSystem->put('file_we_need_in_the_test.pdf', random_bytes(1024 * 1024 * 2 11));
}
public function testSomething(): void
{
$service = new MyService($this->myMockFilesystem);
$this->assertEquals('some result', $service->doSomething());
}