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

StackOverflow https://stackoverflow.com/questions/286589

Вопрос

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

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

Это было полезно?

Решение

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

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

Другие советы

Вы уже зарегистрировались в FakeFS или MockFS ?

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top