Нет необходимости использовать предварительно заполненную фиктивную файловую систему.
Используйте disk_free_space()
для насмешки над файловой системой
disk_free_space () - задана строка, содержащая каталог,
эта функция вернет число
байтов, доступных на
соответствующая файловая система или диск
раздел.
Чтобы смоделировать, просто оберните функцию в класс FileSystem. Затем внедрите его в свой класс, выполняя сохранение в качестве зависимости, и проверьте, не заполнен ли накопитель, прежде чем выполнять фактическое сохранение. В вашем UnitTest просто поменяйте обычный класс с классом, имитирующим полную файловую систему, и все готово. Таким образом, вам не нужно заново создавать полный диск или сохранять диск с файлами проекта все время, когда вы хотите перезапустить тест, например
class MyFileSystem
{
public static function df($drive)
{
return disk_free_space($drive);
}
}
и для имитации полной файловой системы выполните
class MyFileSystemFull
{
public static function df($drive)
{
return 0;
}
}
Если вы хотите перегрузить функцию, чтобы она всегда возвращала 0, вы можете использовать расширение RunKit Pecl и выполнить:
runkit_function_redefine('disk_free_space','string','return 0;');
В качестве альтернативы посмотрите на vfsStream :
vfsStream - это потоковая оболочка для виртуальной файловой системы, которая может быть полезна в модульных тестах для проверки реальной файловой системы. Его можно использовать с любым модульным тестовым фреймворком, таким как PHPUnit или SimpleTest.