ファイルインポートエクスポートモジュールの単体テストを作成しようとしています。
私のメソッドの1つは、渡されたファイル名が存在することを確認します。
これをどのようにモックし、ファイルが存在するかどうかを確認するためのテストを作成しますか?
ファイルインポートエクスポートモジュールの単体テストを作成しようとしています。
私のメソッドの1つは、渡されたファイル名が存在することを確認します。
これをどのようにモックし、ファイルが存在するかどうかを確認するためのテストを作成しますか?
単体テストは、コードの単位が完全に独立して正しく機能することを証明することになっています。テストに合格するためにファイル システムが正しく機能することに依存している場合、そのテストは最適ではなく、特定のテスト実行で嘘をつく可能性があります。
他の実験と同様に、複数の変数が作用していると、結果に確信が持てなくなります。ファイル システムとやり取りする PHP コードの場合は、カスタム ストリーム ラッパー (通常はvfsStreamですが、必要に応じて独自のストリーム ラッパーを簡単に作成できます)を使用してファイル システムをモックするのが最適です。
$noTest < $testWithFileSystemDependency < $testThatMocksFileSystem
通常、これは、ファイル パスを直接使用するメソッドに渡すことによって実現されます。
<?php
function myFunction($someFilePath) {
// do stuff
}
このようにして、ファイル システムをモックし、モックした動作と同じように動作するテスト可能なダミー パスを渡すことができます。
あなたは2つのテストを書きます。1つはファイルを作成してメソッドが成功することを期待し、もう1つはファイルが存在しないことを確認してメソッドが失敗することを期待します。
個人的に_files
は、tests ディレクトリにディレクトリを作成し、そこにファイルを作成するだけです。またはで/tmp
。
fs をモックする方法があります。(この場合)。