Макет файловой системы в интеграционном тестировании
-
08-07-2019 - |
Вопрос
Я пишу программу ruby, которая выполняет некоторые внешние утилиты командной строки. Как я мог издеваться над файловой системой из моих тестов rspec, чтобы я мог легко настроить некоторую файловую иерархию и проверить ее после тестирования. Также было бы лучше, чтобы его реализовали в оперативной памяти, чтобы тесты выполнялись быстро. Р>
Я понимаю, что не могу найти переносимое решение, поскольку мои внешние утилиты - это собственные программы, напрямую взаимодействующие с файловыми службами операционной системы. Linux - моя основная платформа, и решения для этого будет достаточно.
Решение
Возможно, это не даст прямого ответа на ваш вопрос, но в таких случаях я склонен создавать временный каталог во время настройки теста и удалять его при разборке. Конечно, вы также должны убедиться, что приложение пишет в этот временный каталог. У меня всегда есть опция конфигурации, определяющая каталог назначения, который я могу перезаписать во время тестирования.
Когда дело доходит до утверждений, я использую обычный File.exist?
или File.directory?
, но, конечно, вы можете создавать свои собственные обертки вокруг него. Если вам нужно какое-то начальное состояние, вы можете создать каталог, который можно будет использовать в качестве прибора и который будет скопирован во временный каталог во время настройки теста.
Другие советы
Вы уже зарегистрировались в FakeFS или MockFS ? р>
Примечание. Исходная ссылка на MockFS не работает. Он выглядит так , что больше не поддерживается.
Вы можете создать большой файл (размер вашего фиктивного диска) и смонтировать файл как устройство обратной связи . На этом устройстве вы можете создать любую файловую систему и структуру каталогов.
Вы можете создать 2 из них и сделать даже простое сравнение различий, чтобы обеспечить целостность данных после испытаний.
Я надеюсь, что правильно понимаю ваши требования, так как не уверен, почему простое решение ramdisk недостаточно хорошо.
Это также может быть актуально.