Php/phpunit/dbunit/サンプル
提供: 初心者エンジニアの簡易メモ
2015年5月20日 (水) 03:17時点における127.0.0.1 (トーク)による版 (ページの作成:「==サンプル== CREATE TABLE `users` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(15) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB *phpunit.xml...」)
サンプル
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のテーブルが初期化される
