ディレクトリをスキャンし、すべてのサブディレクトリの配列を作成するクラスにメソッドがあります。それは非常にシンプルで、うまく機能します。ただし、このメソッドの単体テストを追加したいのですが、方法を理解するのに苦労しています。
ここに私の問題があります: vfsstream を使用して仮想ファイル システムを作成でき、正常に動作します。ただし、それをクラスに渡して配列を作成することはできません。スキャンするには実際のディレクトリが必要です。管理されたディレクトリに対してテストしたい(明らかに、すべてのスキャンの結果が正確にわかっているので、テストできます)。本番環境でスキャンされたディレクトリは頻繁に変更される場合があります。
したがって、私の唯一の解決策は、テスト フォルダーにテスト固有の偽のディレクトリを作成し、そのパスをスキャナーに渡し、その偽のディレクトリにあるとわかっているものと照合することです。これはベストプラクティスですか、それとも何か不足していますか?
ありがとうございました!
ここにいくつかのコードがあります: テスト
function testPopulateAuto()
{
$c = new \Director\Core\Components\Components;
// The structure of the file system I am checking against. This is what I want to generate.
$check = array(
'TestFolder1',
'TestFolder2',
);
$path = dirname( __FILE__ ) . "/test-file-system/"; // Contains TestFolder1 and TestFolder1
$list = $c->generateList( $path ); // Scans the path and returns an array that should be identical to $check
$this->assertEquals($check, $list);
}