Sistem Fail Maya (VFS) mensimulasikan operasi sistem fail dalam ujian unit, mengelakkan kerumitan pembersihan fail sementara. Artikel ini menerangkan cara menggunakan perpustakaan vfsStream
untuk memudahkan ujian operasi sistem fail dalam ujian unit PHP.
Pertama sekali, kita mempunyai kelas FileCreator
mudah untuk membuat fail:
<?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; } }
Kaedah tradisional memerlukan menetapkan direktori sementara dalam kaedah setUp()
dan membersihkan fail sementara dalam kaedah 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'); } }
Kaedah ini terdedah kepada kesilapan apabila mengendalikan pelbagai fail atau gangguan ujian.
Gunakan vfsStream
untuk mengelakkan masalah ini. Pertama, gunakan komposer untuk memasang:
composer require mikey179/vfsStream
Kemudian, ubah suai kelas ujian:
<?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()
Mencipta sistem fail maya di mana semua operasi dilakukan dalam ingatan tanpa pembersihan manual. Selepas ujian selesai, sistem fail maya akan dimusnahkan secara automatik.
vfsStream
menyediakan ciri -ciri yang lebih kuat seperti kawalan kebenaran, kawalan saiz fail dan simulasi struktur direktori kompleks. Kaedah ini mengelakkan masalah yang disebabkan oleh kegagalan pembersihan fail sementara dalam ujian dan meningkatkan kebolehpercayaan ujian.
Harus diingat bahawa pautan imej asal
Atas ialah kandungan terperinci Operasi sistem fail bebas semasa ujian? Ya tolong!. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!