Как протестировать несколько схем mysql с помощью PHPUnit? - PullRequest
13 голосов
/ 04 мая 2011

Я хотел бы протестировать процесс, который запрашивает несколько схем, используя PHPUnit PHPUnit_Extensions_Database_TestCase класс.Я перерыл документацию, SO и исходный код, но кажется, что мне нужно настроить свою базу данных, используя что-то вроде:

protected function getConnection()
{
    $this->pdo = new PDO('mysql:host=localhost;dbname=unit_test_schema', 'xxxx', 'yyyy');
    return $this->createDefaultDBConnection($this->pdo, 'unit_test_schema');    
}

protected function getDataSet()
{
    return $this->createXMLDataSet(DB_SETUP_DIR.'/schema.xml');
}

Есть ли способ как-то использовать более одной схемы такЯ могу протестировать запрос, например:

SELECT *
FROM   schema1.tableA
JOIN   schema2.tableB
USING  (id)

РЕДАКТИРОВАТЬ: Чтобы было ясно, проблема, которую я пытаюсь решить, состоит в том, что я могу только выяснить, как передать файлы настройки схемыодна база данных.Я хотел бы найти способ сказать «создать tables1.xml в schema1 и tables2.xml в schema2».Таблицы, на которые есть ссылки в разных XML-файлах, будут заполняться и уничтожаться для каждого теста.

1 Ответ

3 голосов
/ 16 мая 2011

Одна вещь, которую я сделал, создала определение для каждой схемы, а затем переопределила определение при модульном тестировании

define('schema1', 'schema1_prod');
define('schema2', 'schema2_prod');

Затем для модульного тестирования

define('schema1', 'unit_tests');
define('schema2', 'unit_tests');

Если вам нравитсяимена таблиц в нескольких схемах будут по-прежнему ломаться, но в противном случае это должно помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...