Maison > développement back-end > tutoriel php > Opérations de système de fichiers sans tracas pendant les tests? Oui s'il vous plait!

Opérations de système de fichiers sans tracas pendant les tests? Oui s'il vous plait!

William Shakespeare
Libérer: 2025-02-14 09:50:12
original
328 Les gens l'ont consulté

Le système de fichiers virtuel (VFS) simule les opérations du système de fichiers dans les tests unitaires, en évitant les tracas du nettoyage des fichiers temporaires. Cet article décrit comment utiliser la bibliothèque vfsStream pour simplifier les tests des opérations du système de fichiers dans les tests unitaires PHP.

Tout d'abord, nous avons une classe FileCreator simple pour créer des fichiers:

<?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;
    }
}
Copier après la connexion

La méthode traditionnelle nécessite de définir un répertoire temporaire dans la méthode setUp() et de nettoyer les fichiers temporaires dans la méthode 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');
    }
}
Copier après la connexion

Cette méthode est sujette à des erreurs lors de la gestion de plusieurs fichiers ou des interruptions de test.

Utilisez vfsStream pour éviter ces problèmes. Tout d'abord, utilisez le compositeur pour installer:

composer require mikey179/vfsStream
Copier après la connexion

Ensuite, modifiez la classe de test:

<?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());
    }
}
Copier après la connexion

vfsStream::setup() a créé un système de fichiers virtuel où toutes les opérations sont effectuées en mémoire sans nettoyage manuel. Une fois le test terminé, le système de fichiers virtuel sera automatiquement détruit.

vfsStream fournit des fonctionnalités plus puissantes telles que le contrôle de l'autorisation, le contrôle de la taille du fichier et la simulation de structure de répertoire complexe. Cette méthode évite les problèmes causés par la défaillance temporaire du nettoyage des fichiers dans les tests et améliore la fiabilité du test.

Hassle-Free Filesystem Operations during Testing? Yes Please!

Hassle-Free Filesystem Operations during Testing? Yes Please!

Il convient de noter que le lien d'image d'origine /uploads/20250214/173949279267ae8db8e54d6.webp ne peut pas être accessible, donc l'image ne peut pas être affichée. Si un lien d'image valide est fourni, je l'inclure dans la sortie.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal