Pergunta

Eu estou escrevendo um programa Ruby que executa alguns utilitários de linha de comando externos. Como eu poderia zombar do sistema de arquivos dos meus testes rspec para que eu pudesse facilmente configurar alguma hierarquia de arquivos e verificá-la depois de testar. Também seria melhor para ser implementado na RAM para que os testes seria executado rapidamente.

Eu percebo que eu não pode encontrar uma solução portátil como meus utilitários externos são programas nativos interagindo diretamente com serviços de arquivo do sistema operacional. Linux é o meu principal plataforma e solução para isso seria suficiente.

Foi útil?

Solução

Talvez isso não vai responder a sua pergunta diretamente, mas, nesses casos, que tendem a criar um diretório temporário durante a instalação de teste e removê-lo na desmontagem. Claro que você também tem que garantir as gravações de aplicação para este diretório temporário. Eu sempre tenho uma opção de configuração definir diretório de destino que eu possa substituir durante o teste.

Quando se trata de afirmações eu uso File.exist? simples ou File.directory?, mas é claro que você pode criar seus próprios wrappers em torno dele. Se você precisar de algum estado inicial que você pode construir um diretório que pode ser usado como um dispositivo elétrico e será copiado para o direcory temporária durante a configuração de teste.

Outras dicas

Você verificou para fora FakeFS ou MockFS ?

Nota: O link original para MockFS não funciona. Ele olhares como ele não é mais sendo mantida.

Você pode criar um arquivo grande (tamanho de você manequim disco) e montar o arquivo como um circuito fechado dispositivo . Você pode criar qualquer sistema de arquivos e estrutura de diretórios neste dispositivo.
Você pode criar 2 deles e fazer ainda diff simples comparar para garantir a integridade dos dados depois de testes.
Espero que eu entendo que você requisitos corretamente desde que eu não sei por que solução ramdisk simples não é bom o suficiente.
Este pode ser relevante também.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top