そのため、私は現在単体テストを取り上げており、旅の途中で、ファイル システムやデータベース クエリなどをモックする必要があるかもしれないことを発見しました。
vfsStream はファイル システムをモックするための優れたライブラリであるという PHPUnit ドキュメントの推奨事項を読みました。
とはいえ、使い方に問題があります。
GitHub でホストされている wiki で提供されているドキュメントに従っているにもかかわらず、セットアップ方法がよくわかりません。
ファイル システムの対話を、適切な名前のメソッドを使用して独自のクラスに抽象化しました。ファイルシステムをモックしていないときは、意図したとおりに機能していたので、それは当面の問題ではないようです。
テストのセットアップ方法は次のとおりです。
public function setUp()
{
// Setup here
$this->filesystem = new Filesystem;
vfsStreamWrapper::register();
$this->root = vfsStream::setup('test-dir');
}
ディレクトリの作成をテストするために書いたテストの例を次に示します。
public function testCanCreateDirectory()
{
$dir = vfsStream::url($this->root->path() . '/sub-dir');
$filesystem = $this->filesystem;
$filesystem->makeDirectory($dir);
$this->assertTrue($filesystem->isDirectory($dir));
}
これまでのところうまくいっているようです。ただし、次のテストは失敗します。
public function testCanPutFile()
{
$file = $this->root->url() . '/sub-dir/test.txt';
$contents = "test text";
$filesystem = $this->filesystem;
$filesystem->put($file, $contents);
$this->assertTrue($filesystem->isFile($file));
$this->assertEquals($contents, $filesystem->get($file));
}
ドキュメントからわかる限り、これは機能するはずですが、明らかに私の読み方は正しくなく、どこかで道に迷っています。
私は何度も何度も行を変更してきましたが、私の人生ではそれを理解することができないので、この問題を解決する方法についてのヒント。
前もって感謝します!