ホームページ > バックエンド開発 > PHPチュートリアル > テスト中の手間のかからないファイルシステム操作?はい、お願いします!

テスト中の手間のかからないファイルシステム操作?はい、お願いします!

William Shakespeare
リリース: 2025-02-14 09:50:12
オリジナル
328 人が閲覧しました

仮想ファイルシステム(VFS)は、一時的なファイルのクリーニングの手間を避けて、ユニットテストでファイルシステム操作をシミュレートします。この記事では、PHPユニットテストでのファイルシステム操作のテストを簡素化するためにvfsStreamライブラリを使用する方法について説明します。

まず、ファイルを作成するための単純なFileCreatorクラスがあります:

<?php
namespace App\Tests;

class FileCreator extends PHPUnit_Framework_TestCase {
    public static function create($path, $name, $content) {
        $filename = rtrim($path, '/') . '/' . $name;
        return file_put_contents($filename, $content) !== false;
    }
}
ログイン後にコピー

従来の方法では、setUp()メソッドに一時ディレクトリを設定し、tearDown()メソッドで一時ファイルをクリーニングする必要があります:

<?php
namespace App\Tests;

class FileCreatorTest extends PHPUnit_Framework_TestCase {
    protected $path;

    public function setUp() {
        $this->path = sys_get_temp_dir();
    }

    public function tearDown() {
        $file = $this->path . '/test.txt';
        if (file_exists($file)) {
            unlink($file);
        }
    }

    public function testCreate() {
        $this->assertTrue(FileCreator::create($this->path, 'test.txt', 'Lorem ipsum'));
        $this->assertFileExists($this->path . '/test.txt');
    }
}
ログイン後にコピー

この方法は、複数のファイルまたはテスト割り込みを処理するときにエラーが発生しやすいです。

これらの問題を回避するには、

vfsStreamを使用します。まず、Composerを使用してインストールします

composer require mikey179/vfsStream
ログイン後にコピー
次に、テストクラスを変更します:

<?php
use org\bovigo\vfs\vfsStream;

class FileCreatorTest extends PHPUnit_Framework_TestCase {
    protected $vfs;

    public function setUp() {
        $this->vfs = vfsStream::setup('testDirectory');
    }

    public function testCreate() {
        $path = vfsStream::url('testDirectory');
        $this->assertTrue(FileCreator::create($path, 'test.txt', 'Lorem ipsum'));
        $this->assertFileExists($this->vfs->getChild('test.txt')->url());
    }
}
ログイン後にコピー

手動クリーニングなしですべての操作がメモリ内で実行される仮想ファイルシステムを作成しました。テストが完了すると、仮想ファイルシステムが自動的に破壊されます。 vfsStream::setup()

許可制御、ファイルサイズ制御、複雑なディレクトリ構造シミュレーションなど、より強力な機能を提供します。 この方法は、テストの一時的なファイルクリーニングの失敗によって引き起こされる問題を回避し、テストの信頼性を向上させます。 vfsStream

Hassle-Free Filesystem Operations during Testing? Yes Please!

Hassle-Free Filesystem Operations during Testing? Yes Please!

元の画像リンク

にアクセスできないため、画像を表示できないことに注意する必要があります。 有効な画像リンクが提供されている場合は、出力に含めます。 /uploads/20250214/173949279267ae8db8e54d6.webp

以上がテスト中の手間のかからないファイルシステム操作?はい、お願いします!の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート