Position actuelle: Accueil> Derniers articles> Comment utiliser MySQLI :: Debug avec phpunit pour le débogage dans les tests unitaires liés à la base de données?

Comment utiliser MySQLI :: Debug avec phpunit pour le débogage dans les tests unitaires liés à la base de données?

M66 2025-05-17

Lorsque vous effectuez des tests unitaires liés à la base de données, nous devons parfois avoir une compréhension plus approfondie de ce qui se passe exactement, en particulier lorsque le test échoue et implique des opérations SQL complexes. L'extension MySQLI de PHP fournit une fonction de débogage très pratique MySqli :: Debug () , qui peut sortir les journaux d'opération sous-jacents à un fichier. Cet article présentera comment combiner MySqli :: Debug () pour implémenter la fonction de débogage des opérations de base de données lors de l'utilisation de PHPUnit pour les tests.

1. Qu'est-ce que MySqli :: Debug () ?

MySQLI :: Debug (String $ debug_options) est une méthode de la classe MySQLI qui peut être utilisée pour activer les journaux de débogage client. Ses paramètres sont une chaîne qui décrit la configuration des informations de débogage, telles que le chemin du fichier de sortie et le niveau de journal. Il convient de noter qu'il n'activait pas automatiquement la journalisation et nécessite également la prise en charge du débogage dans les options de compilation du serveur MySQL.

 mysqli::debug("d:t:o,/tmp/client.trace");

dans:

  • D signifie débogage

  • t signifie contenir des informations sur le thread

  • o signifie la sortie pour fichier

  • /tmp/client.trace est le chemin d'accès au fichier journal

2. Utilisez MySqli :: Debug () dans PHPUnit Test

Lorsque vous utilisez PHPUnit pour les tests liés à la base de données, vous pouvez activer le débogage dans la méthode de configuration () ou de setupBeForClass () du test. De cette façon, les informations de débogage seront enregistrées chaque fois que le test est exécuté pour vous aider à suivre les opérations de base de données.

Voici un exemple réel:

 use PHPUnit\Framework\TestCase;

class DatabaseTest extends TestCase
{
    private static $mysqli;

    public static function setUpBeforeClass(): void
    {
        // Activer la sortie de débogage
        mysqli::debug("d:t:o,/tmp/php-mysqli-debug.log");

        self::$mysqli = new mysqli("localhost", "user", "password", "testdb");

        if (self::$mysqli->connect_error) {
            die("Échec de la connexion: " . self::$mysqli->connect_error);
        }
    }

    public function testInsertData()
    {
        $stmt = self::$mysqli->prepare("INSERT INTO users (name, email) VALUES (?, ?)");
        $stmt->bind_param("ss", $name, $email);

        $name = "Tester l'utilisateur";
        $email = "test@m66.net";

        $this->assertTrue($stmt->execute());
    }

    public static function tearDownAfterClass(): void
    {
        self::$mysqli->close();
    }
}

3. Choses à noter

  1. Autorisations du fichier journal : assurez-vous que PHP a la permission d'écrire sur le chemin du fichier journal spécifié, tel que /tmp/php-mysqli-debug.log .

  2. Utilisez la prudence dans l'environnement de production : MySqli :: Debug () est principalement utilisé dans les étapes de développement et de débogage. Il n'est pas recommandé de lui permettre dans l'environnement de production d'éviter la fuite d'informations sensibles.

  3. Il existe de nombreux contenus de fichiers de débogage : les fichiers de débogage peuvent devenir rapidement importants, en particulier lors de l'exécution d'un grand nombre de tests de base de données, veuillez planifier le chemin du fichier raisonnablement et nettoyer régulièrement les journaux.

4. Analyse des résultats de débogage

Après avoir ouvert le fichier /tmp/php-mysqli-debug.log , vous verrez des informations de débogage détaillées, y compris:

  • Établissement et fermeture de chaque connexion

  • État d'exécution de l'instruction de requête

  • Processus de liaison et d'exécution des paramètres

  • Informations sur le thread, etc.

Ces informations peuvent vous aider à bien comprendre comment votre programme PHP communique avec MySQL, en particulier lors de la localisation des problèmes en cas d'échec des tests.

5. Résumé

L'utilisation de mysqli :: debug () avec phpunit est une méthode de débogage très pratique, en particulier lors du développement de pilotes de base de données, d'ORMS ou d'effectuer des tests d'intégration. Si vous effectuez souvent des tests liés à la base de données et un débogage, vous pourriez aussi bien essayer cette méthode, cela peut vous aider à gagner beaucoup de temps dans le dépannage des problèmes.

Pour en savoir plus sur l'utilisation de mysqli :: debug () , veuillez vous référer au document PHP officiel: https://www.php.net/manual/zh/mysqli.debug.php

  • Étiquettes associées:

    mysqli