- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PHPUnitを使った逐一実行プログラムのテスト方)
逐一実行プログラムのテスト方
このQ&Aのポイント
- PHPUnitを使った逐一実行プログラムのテスト方について説明します。
- PHPUnitを使って逐一実行プログラムをテストすることは可能です。
- テスト対象ファイル内で読み込まれたクラスをモック化する方法についても説明します。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
DBからデータを拾ってループでリクエストを拾えばさほど難しい話ではないような 気がしますが、httpでの処理をトレースする場合、どこかで引っかかると その後の処理が流れずにタイムアウトする可能性が高いですね DBの接続部分と、リクエスト部分のプログラムをわけて リクエストは非同期で回した方がよいかもしれません
補足
ご回答ありがとうございます。 具体的には下記のようなバッチ(超単純化して雑ですが)をテストしたいと考えてます。 この既存のプログラムは書き換える事ができず、これが正しく動作していることを確認したいのです。 DBを扱うクラスとかRequestクラスに依存したくないので、これらをモック化したいと考えています。 batch.phpの中でgetIdメソッドとかをモック化してテストするにはどうしたらよいのでしょうか。 【batch.php】 <?php require_once "HTTP/Request.php"; require "hogeDbClass.php"; $hogeDb = new hogeDbClass(); $id = $hogeDb->getId(); if ($id === false) echo "データ取得失敗"; $web = new HTTP_Request(); if ($id == false) { $web->setURL('http://test.failure.info'); $result = $web->sendRequest(); if ($web->getResponseCode() !== 200) { echo "通信失敗"; } else { echo "通信成功"; } } else { $web->setURL('http://test.success.info'); $result = $web->sendRequest(); if ($web->getResponseCode() !== 200) { echo "通信失敗"; } else { echo "通信成功"; } } ?> 【hogeDbClass.php】 <?php class hogeDbClass { private $_db; public function __construct() { $this->_db = new PDO(); } public function getId() { $sql = 'select id from test'; $stmt = $this->_db->prepare($sql); $stmt->execute(); return $stmt->fetch(PDO::FETCH_ASSOC); } } ?>