Php/phpunit/dbunit/サンプル
提供: 初心者エンジニアの簡易メモ
サンプル
CREATE TABLE `users` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(15) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB
- phpunit.xml(に以下DB設定情報追加
<?xml version="1.0" encoding="UTF-8" ?> <phpunit> <php> <var name="DB_DSN" value="mysql:dbname=db1;host=localhost" /> <var name="DB_USER" value="user1" /> <var name="DB_PASSWD" value="pass1***" /> <var name="DB_DBNAME" value="hogehoge" /> </php> </phpunit>
- UsersDaoTest.php
require_once "PHPUnit/Extensions/Database/TestCase.php"; class UsersDaoTest extends PHPUnit_Extensions_Database_TestCase { // PDO のインスタンス生成は、クリーンアップおよびフィクスチャ読み込みのときに一度だけ static private $pdo = null; // PHPUnit_Extensions_Database_DB_IDatabaseConnection のインスタンス生成は、テストごとに一度だけ private $conn = null; final public function getConnection() { if ($this->conn === null) { if (self::$pdo == null) { self::$pdo = new PDO($GLOBALS['DB_DSN'], $GLOBALS['DB_USER'], $GLOBALS['DB_PASSWD']); } $this->conn = $this->createDefaultDBConnection(self::$pdo, $GLOBALS['DB_DBNAME']); } return $this->conn; } /** * @return PHPUnit_Extensions_Database_DataSet_IDataSet */ public function getDataSet() { return $this->createFlatXMLDataSet(__DIR__.'/_files/users.xml'); } public function testCount() { $count = 2; $this->assertThat($count, $this->equalTo($this->conn->getRowCount('users')), '正しい件数である'); } }
- _files/users.xml
<?xml version="1.0" ?> <dataset> <users id="1" name="joe" /> <users id="2" name="nancy" /> </dataset>
phpunitを実行するとxmlで設定したデータにDBのテーブルが初期化される