Как протестировать несколько схем mysql с помощью PHPUnit?

#php #mysql #unit-testing #phpunit

#php #mysql #модульное тестирование #phpunit

Вопрос:

Я хотел бы протестировать процесс, который выполняет запросы по нескольким схемам, используя класс PHPUnit_Extensions_Database_TestCase от PHPUnit. Я просмотрел документацию, 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:

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

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

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

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

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