Mock файловая система для тестирования модулей Perl
Есть ли способ или модуль, который позволяет мне моделировать поддельную файловую систему для использования с модулем Perl?
В модульном тестировании я использую различные модули Test::*
и Test::Mock*
, но иногда я хотел бы подделывать файловую систему. Простой пример (и минимальное требование) будет подделка результата из операторов тестирования файлов -r
или -f
, поэтому, когда я вызываю объекты или модули, которые выполняют проверки файлов, я могу более легко контролировать результат.
Я знаю, что существует множество способов обойти эту проблему, например создание временных файлов или обертывание тестов файлов в их собственных функциях, которые затем можно издеваться, но иногда было бы неплохо, если бы я мог просто получить Perl ложь мне... Поэтому решения, предлагающие переписывать проверенный код, не требуются; -)
Update:
После того, как вы только что нашли и прочитали этот вопрос SO, переписывание кода, чтобы оно было более проверяемым, выглядит более разумным. Тем не менее, пальцы скрещены...
Ответы
Ответ 1
Это стоит посмотреть: Filesys::Virtual и
Filesys::Virtual::Async. Ive использовал первый. Смешанно с Path::Class и File::Temp it легко сделать все виды самоочищающихся вещей короче и элегантно. Test::Virtual::Filesystem также выглядит интересным.