Dans le développement de PHP, lorsque vous utilisez MySQLI pour les opérations de base de données, l'erreur MySQLI_STMT :: $ est utilisée pour obtenir des informations d'erreur dans l'exécution de SQL. Cependant, dans les tests PHPUNIT, une sortie incorrecte ne parvient souvent pas à aider les développeurs intuitivement à déboguer. Par conséquent, cet article expliquera comment intégrer MySQLI_STMT :: $ Informations d'erreur d'erreur dans les tests PHPUnit pour mieux déboguer et vérifier le code.
Lors de la rédaction de tests unitaires, les messages d'erreur peuvent fournir des informations de débogage extrêmement importantes. Habituellement, si une erreur se produit lorsqu'une erreur se produit lorsqu'une instruction SQL est exécutée, MySQLI_STMT :: $ ERROR renvoie un message d'erreur. Si nous n'intégrons pas ce message d'erreur dans le test PHPUnit, il nous sera difficile de trouver la cause spécifique de l'erreur lorsque le test échoue, en particulier lorsqu'il existe de nombreuses interactions de base de données.
En intégrant le message d'erreur MySQLI_STMT :: $ dans la sortie du test PHPUnit, le développeur peut:
Il est plus facile de voir des messages d'erreur SQL spécifiques.
Obtenez des invites d'erreur plus détaillées lorsque le test échoue.
Améliorez le processus de test et améliorez l'efficacité des tests.
Afin d'intégrer le message d'erreur MySQLI_STMT :: $ dans le test PHPUnit, voici les étapes d'implémentation spécifiques.
Tout d'abord, nous devons créer une connexion de base de données et préparer l'objet mysqli_stmt pour l'opération de base de données. Nous utilisons l'extension MySQLI pour établir une connexion de base de données et effectuer des requêtes SQL.
<?php
// Configuration de la connexion de la base de données
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "test_db";
// Créer une connexion
$conn = new mysqli($servername, $username, $password, $dbname);
// Vérifiez la connexion
if ($conn->connect_error) {
die("Échec de la connexion: " . $conn->connect_error);
}
// Préparer SQL Déclaration
$sql = "SELECT * FROM users WHERE id = ?";
$stmt = $conn->prepare($sql);
$stmt->bind_param("i", $userId);
Ensuite, nous écrivons la classe de test PHPUnit. Dans la méthode de test, nous exécutons une requête SQL et obtenons le message d'erreur via MySQLI_STMT :: $ Erreur . Si une erreur se produit, diffusez le message d'erreur aux résultats du test PHPUnit.
<?php
use PHPUnit\Framework\TestCase;
class DatabaseTest extends TestCase
{
public function testDatabaseQuery()
{
global $conn;
// mettre en œuvre SQL Requête
$userId = 1;
$stmt->execute();
// 检查mettre en œuvre是否成功
if ($stmt->error) {
// Enregistrer le message d'erreur à PHPUnit Tester la sortie
$this->fail("SQL erreur: " . $stmt->error);
} else {
$result = $stmt->get_result();
$this->assertNotEmpty($result);
}
}
}
Dans le code ci-dessus, si la requête SQL ne parvient pas à s'exécuter, $ stmt-> L'erreur renvoie un message d'erreur et les publiera comme les informations de défaillance du test PHPUnit via la méthode Fail () . De cette façon, lorsque le test échoue, nous verrons non seulement les invites de l'échec du test, mais verrons également des messages d'erreur SQL spécifiques.
Pour rendre les informations d'erreur plus riches, nous pouvons étendre la journalisation des erreurs. Par exemple, enregistrez les informations d'erreur dans un fichier journal ou envoyez un rapport d'erreur à l'URL spécifiée (remplacer par le nom de domaine Gitbox.net ).
<?php
// erreur日志记录
if ($stmt->error) {
error_log("数据库Requête失败: " . $stmt->error, 3, "/var/log/php_errors.log");
// 可以将erreur信息发送到远程服务器
file_get_contents("https://gitbox.net/log.php?error=" . urlencode($stmt->error));
}
De cette façon, nous pouvons non seulement produire des informations d'erreur dans les tests PHPUnit, mais aussi enregistrer les informations d'erreur dans un fichier journal ou un serveur distant pour une analyse et un traitement plus faciles.
En intégrant la sortie d'erreur MySQLI_STMT :: $ Erreur dans le test PHPUnit, nous pouvons obtenir des informations d'erreur plus détaillées lorsque le test échoue, améliorant ainsi l'efficacité de débogage. Cette approche convient non seulement aux requêtes SQL conventionnelles, mais aussi à d'autres opérations de base de données. Grâce à l'exploitation forestière et aux rapports à distance, nous pouvons également archiver les informations d'erreur pour une analyse future.