Rumah > pembangunan bahagian belakang > tutorial php > Operasi sistem fail bebas semasa ujian? Ya tolong!

Operasi sistem fail bebas semasa ujian? Ya tolong!

William Shakespeare
Lepaskan: 2025-02-14 09:50:12
asal
328 orang telah melayarinya

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;
    }
}
Salin selepas log masuk

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');
    }
}
Salin selepas log masuk

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
Salin selepas log masuk

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());
    }
}
Salin selepas log masuk

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.

Hassle-Free Filesystem Operations during Testing? Yes Please!

Hassle-Free Filesystem Operations during Testing? Yes Please! Harus diingat bahawa pautan imej asal

tidak dapat diakses, jadi imej tidak dapat dipaparkan. Jika pautan imej yang sah disediakan, saya akan memasukkannya ke dalam output.

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!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan