PHP開発では、 MySQLIをデータベース操作に使用する場合、 MySQLI_STMT :: $エラーを使用して、SQL実行でエラー情報を取得します。ただし、PHPunitテストでは、誤った出力が開発者のデバッグを直感的に支援することができないことがよくあります。したがって、この記事では、 mysqli_stmt :: $エラー情報をphpunitテストに統合して、コードをよりよくデバッグして検証する方法について説明します。
ユニットテストを書くとき、エラーメッセージは非常に重要なデバッグ情報を提供できます。通常、SQLステートメントが実行されたときにエラーが発生したときにエラーが発生した場合、 MySQLI_STMT :: $エラーはエラーメッセージを返します。このエラーメッセージをPHPunitテストに統合しない場合、特に多くのデータベース相互作用がある場合、テストが失敗したときにエラーの特定の原因を見つけることは困難です。
mysqli_stmt :: $エラーメッセージをphpunitテスト出力に統合することにより、開発者は以下を行うことができます。
特定のSQLエラーメッセージを見るのは簡単です。
テストが失敗したときに、より詳細なエラープロンプトを取得します。
テストプロセスを改善し、テストの有効性を改善します。
mysqli_stmt :: $エラーメッセージをphpunitテストに統合するために、以下は特定の実装手順です。
まず、データベース接続を作成し、データベース操作のためにMySQLI_STMTオブジェクトを準備する必要があります。 MySQLI拡張機能を使用して、データベース接続を確立し、SQLクエリを実行します。
<?php
// データベース接続構成
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "test_db";
// 接続を作成します
$conn = new mysqli($servername, $username, $password, $dbname);
// 接続を確認してください
if ($conn->connect_error) {
die("接続に失敗しました: " . $conn->connect_error);
}
// 準備する SQL 声明
$sql = "SELECT * FROM users WHERE id = ?";
$stmt = $conn->prepare($sql);
$stmt->bind_param("i", $userId);
次に、phpunitテストクラスを書きます。テスト方法では、SQLクエリを実行し、 mysqli_stmt :: $ errorを介してエラーメッセージを取得します。エラーが発生した場合、エラーメッセージをPHPunitテスト結果に出力します。
<?php
use PHPUnit\Framework\TestCase;
class DatabaseTest extends TestCase
{
public function testDatabaseQuery()
{
global $conn;
// 埋め込む SQL クエリ
$userId = 1;
$stmt->execute();
// 检查埋め込む是否成功
if ($stmt->error) {
// エラーメッセージを記録します PHPUnit テスト出力
$this->fail("SQL 間違い: " . $stmt->error);
} else {
$result = $stmt->get_result();
$this->assertNotEmpty($result);
}
}
}
上記のコードでは、SQLクエリが実行に失敗した場合、 $ stmt->エラーはエラーメッセージを返し、 fail()メソッドを介してphpunitテストの故障情報として出力します。このようにして、テストが失敗した場合、テスト障害のプロンプトが表示されるだけでなく、特定のSQLエラーメッセージも表示されます。
エラー情報をより豊かにするために、エラーロギングを拡張できます。たとえば、エラー情報をログファイルに保存するか、指定されたURLにエラーレポートを送信します( gitbox.netドメイン名に置き換えます)。
<?php
// 間違い日志记录
if ($stmt->error) {
error_log("数据库クエリ失败: " . $stmt->error, 3, "/var/log/php_errors.log");
// 可以将間違い信息发送到远程服务器
file_get_contents("https://gitbox.net/log.php?error=" . urlencode($stmt->error));
}
このようにして、PHPunitテストにエラー情報を出力するだけでなく、エラー情報をログファイルまたはリモートサーバーに保存して、後続の分析と処理を容易にします。
mysqli_stmt :: $エラー出力をphpunitテストに統合することにより、テストが失敗したときにより詳細なエラー情報を取得し、それによりデバッグ効率を向上させることができます。このアプローチは、従来のSQLクエリだけでなく、他のデータベース操作にも適しています。ロギングとリモートレポートを通じて、将来の分析のためにエラー情報をアーカイブすることもできます。