У меня есть метод в классе, который сканирует каталог и создает массив всех подкаталогов. Это довольно просто и отлично работает. Тем не менее, я хотел бы добавить единичный тест для этого метода, и мне сложно понять, как это сделать.PHP Модульное тестирование и издевательство файловой системы scandir()
Вот моя проблема: я могу создать виртуальную файловую систему с помощью vfsstream, и она отлично работает. Однако я не могу передать это в свой класс для создания массива. Для сканирования требуется реальный каталог. Я хочу протестировать управляемый каталог (очевидно, поэтому я точно знаю, что будет результатом каждого сканирования, чтобы я мог его протестировать). Отсканированный каталог в производстве может часто меняться.
Итак, мое единственное решение - создать в моих тестовых папках специфический поддельный каталог, прошедший проверку, передать этот путь моему сканеру, а затем проверить его на то, что я знаю, в этом поддельном каталоге. Это лучшая практика или я что-то упускаю?
Спасибо!
Вот код: Тест
function testPopulateAuto()
{
$c = new \Director\Core\Components\Components;
// The structure of the file system I am checking against. This is what I want to generate.
$check = array(
'TestFolder1',
'TestFolder2',
);
$path = dirname(__FILE__) . "/test-file-system/"; // Contains TestFolder1 and TestFolder1
$list = $c->generateList($path); // Scans the path and returns an array that should be identical to $check
$this->assertEquals($check, $list);
}
Спасибо, я просто использовал VFSstream неправильно. Я не нашел документацию очень полезной. Еще раз спасибо! – Apollo