| Prev | Next |
作成中のソフトウェアのテストを書いているうちに、 データベースに関するコードをテストする必要が出てくることもあるでしょう。 データベース拡張を使用すると、 データベースを特定の状態にしてからデータベース関連のコードを実行し、 データベースのデータが期待通りになっているかどうかを確かめることができます。
データベース関連のユニットテストを作成するもっとも手っ取り早い方法は、 PHPUnit_Extensions_Database_TestCase クラスを継承することです。 このクラスには、データベース接続を作成したり データベースにデータを送信したり、 テストの実行後にデータベースの中身を様々な形式のデータセットと比較したりする機能があります。 例 9.1 に、getConnection() と getDataSet() の実装例を示します。
例 9.1: データベーステストケースの準備
<?php
require_once 'PHPUnit/Extensions/Database/TestCase.php';
class DatabaseTest extends PHPUnit_Extensions_Database_TestCase
{
protected function getConnection()
{
$pdo = new PDO('mysql:host=localhost;dbname=testdb', 'root', '');
return $this->createDefaultDBConnection($pdo, 'testdb');
}
protected function getDataSet()
{
return $this->createFlatXMLDataSet(dirname(__FILE__).'/_files/bank-account-seed.xml');
}
}
?>
getConnection() メソッドは、 PHPUnit_Extensions_Database_DB_IDatabaseConnection インターフェイスの実装を返す必要があります。 createDefaultDBConnection() メソッドを使用して、データベース接続を返すことができます。 このメソッドの最初のパラメータには PDO オブジェクトを渡し、2 番目のパラメータにはテスト対象のスキーマの名前を渡します。
getDataSet() メソッドは、 PHPUnit_Extensions_Database_DataSet_IDataSet インターフェイスの実装を返す必要があります。 現在、PHPUnit では 3 種類のデータセットが使用できます。 データセットについては 「データセット」 で説明します。
表9.1 データベーステストケースのメソッド
| メソッド | 意味 |
|---|---|
PHPUnit_Extensions_Database_DB_IDatabaseConnection getConnection()
|
データベース接続を返すように実装します。これを用いて、期待するデータセットやテーブルを調べます。 |
PHPUnit_Extensions_Database_DataSet_IDataSet getDataSet()
|
データセットを返すように実装します。データベースの初期設定 (setup) や後始末 (teardown) の際にこれを使用します。 |
PHPUnit_Extensions_Database_Operation_DatabaseOperation getSetUpOperation()
|
オーバーライドして、各テストの最初に実行する特定の操作を返すようにします。操作の詳細については 「操作」 を参照ください。 |
PHPUnit_Extensions_Database_Operation_DatabaseOperation getTearDownOperation()
|
オーバーライドして、各テストの最後に実行する特定の操作を返すようにします。操作の詳細については 「操作」 を参照ください。 |
PHPUnit_Extensions_Database_DB_DefaultDatabaseConnection createDefaultDBConnection(PDO $connection, string $schema)
|
$connection PDO オブジェクトのデータベース接続ラッパーを返します。テスト対象のデータベーススキーマを $schema で指定します。このメソッドの結果を getConnection() の返り値として使用することができます。
|
PHPUnit_Extensions_Database_DataSet_FlatXmlDataSet createFlatXMLDataSet(string $xmlFile)
|
$xmlFile で指定した絶対パスにある xml ファイルから作成したフラット xml データセットを返します。xml ファイルについての詳細は 「Flat XML データセット」 を参照ください。このメソッドの結果を getDataSet() の返り値として使用することができます。
|
PHPUnit_Extensions_Database_DataSet_XmlDataSet createXMLDataSet(string $xmlFile)
|
$xmlFile で指定した絶対パスにある xml ファイルから作成した xml データセットを返します。xml ファイルについての詳細は 「XML データセット」 を参照ください。このメソッドの結果を getDataSet() の返り値として使用することができます。
|
void assertTablesEqual(PHPUnit_Extensions_Database_DataSet_ITable $expected, PHPUnit_Extensions_Database_DataSet_ITable $actual)
|
$expected テーブルの内容が $actual テーブルの内容と一致しないときにエラーを報告します。
|
void assertDataSetsEqual(PHPUnit_Extensions_Database_DataSet_IDataSet $expected, PHPUnit_Extensions_Database_DataSet_IDataSet $actual)
|
$expected データセットの内容が $actual データセットの内容と一致しないときにエラーを報告します。
|
| Prev | Next |
Copyright © 2005-2011 Sebastian Bergmann.