3

ファイルインポートエクスポートモジュールの単体テストを作成しようとしています。

私のメソッドの1つは、渡されたファイル名が存在することを確認します。

これをどのようにモックし、ファイルが存在するかどうかを確認するためのテストを作成しますか?

4

3 に答える 3

5

単体テストは、コードの単位が完全に独立して正しく機能することを証明することになっています。テストに合格するためにファイル システムが正しく機能することに依存している場合、そのテストは最適ではなく、特定のテスト実行で嘘をつく可能性があります。

他の実験と同様に、複数の変数が作用していると、結果に確信が持てなくなります。ファイル システムとやり取りする PHP コードの場合は、カスタム ストリーム ラッパー (通常はvfsStreamですが、必要に応じて独自のストリーム ラッパーを簡単に作成できます)を使用してファイル システムをモックするのが最適です。

$noTest < $testWithFileSystemDependency < $testThatMocksFileSystem

通常、これは、ファイル パスを直接使用するメソッドに渡すことによって実現されます。

<?php
function myFunction($someFilePath) {
    // do stuff
}

このようにして、ファイル システムをモックし、モックした動作と同じように動作するテスト可能なダミー パスを渡すことができます。

于 2012-08-26T22:58:01.390 に答える
1

あなたは2つのテストを書きます。1つはファイルを作成してメソッドが成功することを期待し、もう1つはファイルが存在しないことを確認してメソッドが失敗することを期待します。

于 2012-08-26T22:42:29.327 に答える
1

個人的に_filesは、tests ディレクトリにディレクトリを作成し、そこにファイルを作成するだけです。またはで/tmp

fs をモックする方法があります(この場合)。

于 2012-08-26T22:43:08.767 に答える