Подтвердить что ты не робот

Моная файловая система в интеграционном тестировании

Я пишу программу ruby, которая выполняет некоторые внешние утилиты командной строки. Как я мог высмеять файловую систему из своих тестов rspec, чтобы я мог легко настроить некоторую иерархию файлов и проверить ее после тестирования. Также было бы лучше всего реализовать в ram, чтобы тесты выполнялись быстро.

Я понимаю, что я не могу найти портативное решение, так как мои внешние утилиты - это собственные программы, взаимодействующие напрямую с файловыми службами операционной системы. Linux - моя основная платформа, и этого достаточно.

4b9b3361

Ответ 1

Возможно, это не ответит на ваш вопрос напрямую, но в таких случаях я стараюсь создать временный каталог во время установки теста и удалить его при срыве. Конечно, вы также должны обеспечить, чтобы приложение записывалось в этот временный каталог. У меня всегда есть параметр конфигурации, определяющий каталог назначения, который я могу перезаписать во время тестирования.

Когда дело доходит до утверждений, я использую простые File.exist? или File.directory?, но, конечно, вы можете создавать свои собственные обертки вокруг него. Если вам нужно какое-то начальное состояние, вы можете создать каталог, который можно использовать в качестве инструмента, и будет скопирован во временную директорию во время установки теста.

Ответ 2

Вы проверили FakeFS или MockFS?

Примечание. Исходная ссылка на MockFS не работает. Он выглядит как, он больше не поддерживается.

Ответ 3

Вы можете создать большой файл (размер вашего фиктивного диска) и смонтировать файл как loop-back device. Вы можете создать любую файловую систему и структуру каталогов на этом устройстве.
Вы можете создать 2 из них и сделать даже простой diff, чтобы обеспечить целостность данных после тестов.
Надеюсь, я правильно понимаю ваши требования, так как я не уверен, почему простое решение для ramdisk недостаточно эффективно.
Это также может иметь значение.