Heim >Backend-Entwicklung >PHP-Tutorial >Problemloser Dateisystemoperationen während des Tests? Ja, bitte!
virtuelles Dateisystem (VFS) simuliert Dateisystemvorgänge in Unit -Tests und vermeidet den Ärger, temporäre Dateien zu reinigen. In diesem Artikel wird beschrieben, wie die Bibliothek vfsStream
verwendet wird, um die Tests von Dateisystemvorgängen in PHP -Unit -Tests zu vereinfachen.
Zunächst haben wir eine einfache FileCreator
-Klasse zum Erstellen von Dateien:
<code class="language-php"><?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; } }</code>
Die herkömmliche Methode erfordert das Festlegen eines temporären Verzeichnisses in der Methode setUp()
und die Reinigung der temporären Dateien in der Methode tearDown()
:
<code class="language-php"><?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'); } }</code>
Diese Methode ist bei der Behandlung mehrerer Dateien oder Testinterrupts zu Fehlern.
Verwenden Sie vfsStream
, um diese Probleme zu vermeiden. Verwenden Sie zunächst den Komponisten, um:
<code class="language-bash">composer require mikey179/vfsStream</code>
Ändern Sie dann die Testklasse:
<code class="language-php"><?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()); } }</code>
vfsStream::setup()
Erstellt ein virtuelles Dateisystem, in dem alle Vorgänge ohne manuelle Reinigung im Speicher ausgeführt werden. Nach Abschluss des Tests wird das virtuelle Dateisystem automatisch zerstört.
vfsStream
bietet leistungsstärkere Funktionen wie Berechtigungssteuerung, Dateigrößensteuerung und komplexe Verzeichnisstruktursimulation. Diese Methode vermeidet Probleme, die durch temporäre Dateireinigungsfehler bei der Prüfung verursacht werden, und verbessert die Zuverlässigkeit des Tests.
Es ist zu beachten, dass auf den Original -Bildverbindungslink /uploads/20250214/173949279267ae8db8e54d6.webp
nicht zugegriffen werden kann, sodass das Bild nicht angezeigt werden kann. Wenn ein gültiger Bildlink bereitgestellt wird, werde ich ihn in die Ausgabe einbeziehen.
Das obige ist der detaillierte Inhalt vonProblemloser Dateisystemoperationen während des Tests? Ja, bitte!. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!