Как использовать phpunit с DBUnit в IBM DB2?

У меня возникли некоторые проблемы при попытке использовать PHPUnit_Extensions_Database_TestCase в IBM Db2.
Я пробовал разные решения:

1. with a DBAL connection in the getConnection() method:

final public function getConnection() {

$options = array(
'i5_naming' => DB2_I5_NAMING_ON,
'DB2_ATTR_CASE' => DB2_CASE_LOWER
);

$driver = 'ibm_db2';
$ConnParm = array(
'driver' => $driver,
'dbname' => $hostDB,
'host' => $tcphost,
'user' => $un,
'password' => $pw,
'driverOptions' => $options
);

$this->connDB = DriverManager::getConnection($ConnParm);

$this->conn = $this->createDefaultDBConnection($this->connDB, $ConnParm['dbname']);

return $this->conn;
}

с этим исключением: аргумент 1 передан
PHPUnit_Extensions_Database_TestCase :: createDefaultDBConnection () должен
быть экземпляром PDO, заданным экземпляром Doctrine \ DBAL \ Connection,

2. with PDO connection
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;
}

execption: PHPUnit_Extensions_Database_Exception: указанный класс для
Драйвер IBM (PHPUnit_Extensions_Database_DB_MetaData_Ibm) не
существовать.

3 by creating the Ibm.php class inside:
phpunit/dbunit/PHPUnit/Extensions/Database/DB/Meatadata/Ibm.php

adding the line:
'ibm' => 'PHPUnit_Extensions_Database_DB_MetaData_Ibm' inside $metaDataclassMap in Extensions/Database/DB/MetaData.php

adding the line :
'phpunit_extensions_database_db_metadata_ibm' => '/Extensions/Database/DB/MetaData/Ibm.php' inside dbunit/PHPUnit/Extensions/Database/Autoload.php

исключение: PHPUnit_Extensions_Database_Exception: указанный класс для
Драйвер IBM (PHPUnit_Extensions_Database_DB_MetaData_Ibm) не
существовать.

Есть ли кто-нибудь, кто знает, как я могу протестировать базу данных IBM DB2 с помощью PHPUnit и DBUnit (используя getDataSet, assertDataSetsEqual () ..)?

Большое спасибо

Больше деталей:

Я скопировал Oci.php и создал
Ibm.php Скрипт из него, в папке:

phpunit/dbunit/PHPUnit/Extensions/Database/DB/Meatadata/

Внутри Ibm.php скрипт я объявил класс: PHPUnit_Extensions_Database_DB_MetaData_Ibm с помощью этих методов:

getTableNames()
getTableColumns()
getTablePrimaryKeys()
loadColumnInfo()

В данный момент я не концентрируюсь на содержании методов. Я адаптирую их к DB2 SQL позже.

После этого я добавил элемент:
'ibm' => 'PHPUnit_Extensions_Database_DB_MetaData_Ibm' внутри $metaDataclassMap массив в Extensions/Database/DB/MetaData.php
и в автозагрузку:

dbunit/PHPUnit/Extensions/Database/Autoload.php

я добавил элемент:

'phpunit_extensions_database_db_metadata_ibm' => '/Extensions/Database/DB/MetaData/Ibm.php'.

Теперь у меня есть эта ошибка:

1) DeliveredOrdersTest :: testIfGetsDataSet
PHPUnit_Extensions_Database_Exception: указанный класс для драйвера ibm
(PHPUnit_Extensions_Database_DB_MetaData_Ibm) не существует.

во время выполнения этого теста (deliveryOrdersXmlFixture.xml является стандартным набором данных XML)
:

class DeliveredOrdersTest extends PHPUnit_Extensions_Database_TestCase {
// only instantiate pdo once for test clean-up/fixture load
static private $pdo = null;

// only instantiate PHPUnit_Extensions_Database_DB_IDatabaseConnection once per test
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->createXMLDataSet(dirname(__FILE__) . '/_files/deliveredOrdersXmlFixture.xml');
}

public function testIfGetsDataSet() {
// empty test, in order to have the getDataSet call
}
}

Что мне не хватает?
Где я должен указать мой новый PHPUnit_Extensions_Database_DB_MetaData_Ibm класс, чтобы позволить PHPUnit найти его?
Я так далёк от получения какой-либо ошибки при выполнении теста?
Заранее спасибо.

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]