17

いくつかの外部コマンドライン ユーティリティを実行する ruby​​ プログラムを作成しています。ファイル階層を簡単にセットアップしてテスト後に検証できるように、rspec テストからファイルシステムをモックするにはどうすればよいでしょうか。また、テストが迅速に実行されるように、RAM に実装することも最適です。

外部ユーティリティはオペレーティング システムのファイル サービスと直接対話するネイティブ プログラムであるため、移植可能なソリューションが見つからない可能性があることを認識しています。Linux は私の主要なプラットフォームであり、そのためのソリューションで十分です。

4

3 に答える 3

40

FakeFSまたはMockFSをチェックアウトしましたか?

注: MockFS への元のリンクは機能しません。もうメンテナンスされていないようです。

于 2009-12-01T14:48:30.547 に答える
8

これはあなたの質問に直接答えないかもしれませんが、そのような場合、テストのセットアップ中に一時ディレクトリを作成し、分解時に削除する傾向があります。もちろん、アプリケーションがこの一時ディレクトリに書き込むことも確認する必要があります。テスト中に上書きできる宛先ディレクトリを定義する構成オプションが常にあります。

アサーションに関しては、plainFile.exist?またはを使用File.directory?しますが、もちろん独自のラッパーを作成することもできます。初期状態が必要な場合は、フィクスチャとして使用できるディレクトリを構築し、テスト セットアップ中に一時的なディレクトリにコピーできます。

于 2008-11-13T10:52:25.160 に答える
6

大きなファイル (ダミー ディスクのサイズ) を作成し、そのファイルをループバック デバイスとしてマウントできます。このデバイスには、任意のファイル システムとディレクトリ構造を作成できます。
それらのうちの 2 つを作成し、単純な差分比較を行って、テスト後のデータの整合性を確保することができます。
単純な ramdisk ソリューションでは不十分な理由がわからないので、要件を正しく理解していることを願っています。
これも関係あるかもしれません。

于 2008-11-13T19:24:03.720 に答える