PHPUnit のデータベース拡張機能を使用するテスト ケースを作成しようとしています。私は公式ドキュメントとMike Livelyのこの投稿に従いましたが、PHPUnitは不平を言い続けています:
1) ClearanceProfileTest::testFetchPrivileges
PHPUnit_Extensions_Database_Operation_Exception: COMPOSITE[TRUNCATE] operation failed on query:
DELETE FROM "profile_privilege_mappings"
using args: Array
(
)
[SQLSTATE[HY000]: General error: 1 no such table: profile_privilege_mappings]
データベース スキーマが設定されていないためにエラーが発生したと思われますが、それをロードする方法が見つかりません。.sql
ファイルの内容を読み込んで PDO クエリとして実行しようとしましたが、何もしませんでした。
ここに私のテストケースコードがあります:
class ClearanceProfileTest extends PHPUnit_Extensions_Database_TestCase
{
/**
* @return PHPUnit_Extensions_Database_DB_IDatabaseConnection
*/
public function getConnection() {
$pdo = new PDO('sqlite::memory:');
return $this->createDefaultDBConnection($pdo, ':memory:');
}
/**
* @return PHPUnit_Extensions_Database_DataSet_IDataSet
*/
protected function getDataSet() {
$yaml = dirname(__FILE__) . "/ClearanceProfileTestDataset.yml";
$dataset = new PHPUnit_Extensions_Database_DataSet_YamlDataSet($yaml);
return $dataset;
}
public function testFetchPrivileges() {
$cp = ClearanceProfile::retrieve_one('id = ?', 1);
$privileges = $cp->fetchPrivileges();
$this->assertEquals(count($privileges), 1);
}
}