Shopware 6 : как перенаправить результаты модульного тестирования shopware из устройства в исходную папку?

#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());
}