Domanda

Sto scrivendo un programma ruby ??che esegue alcune utility esterne della riga di comando. Come ho potuto deridere il filesystem dai miei test rspec in modo da poter facilmente impostare una gerarchia di file e verificarlo dopo il test. Sarebbe anche meglio essere implementato in ram in modo che i test vengano eseguiti rapidamente.

Mi rendo conto che potrei non trovare una soluzione portatile poiché le mie utility esterne sono programmi nativi che interagiscono direttamente con i servizi di file del sistema operativo. Linux è la mia piattaforma principale e la soluzione sarebbe sufficiente.

È stato utile?

Soluzione

Forse questo non risponderà direttamente alla tua domanda, ma in questi casi tendo a creare una directory temporanea durante l'installazione del test e rimuoverlo al momento dello smontaggio. Ovviamente devi anche assicurarti che l'applicazione scriva in questa directory temporanea. Ho sempre un'opzione di configurazione che definisce la directory di destinazione che posso sovrascrivere durante i test.

Quando si tratta di asserzioni, uso semplicemente File.exist? o File.directory? , ma ovviamente puoi creare i tuoi wrapper attorno. Se è necessario uno stato iniziale, è possibile creare una directory che può essere utilizzata come dispositivo e che verrà copiata nella directory temporanea durante l'installazione del test.

Altri suggerimenti

Hai verificato FakeFS o MockFS ?

Nota: il collegamento originale a MockFS non funziona. sembra non viene più mantenuto.

Puoi creare un file di grandi dimensioni (dimensioni del tuo disco fittizio) e montare il file come dispositivo di loop-back . È possibile creare qualsiasi file system e struttura di directory su questo dispositivo.
Puoi crearne 2 e fare un confronto diff anche semplice per garantire l'integrità dei dati dopo i test.
Spero di aver capito correttamente i tuoi requisiti poiché non so perché la semplice soluzione ramdisk non sia abbastanza buona.
Anche questo potrebbe essere pertinente.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top