#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');
Если у вас одинаковые имена таблиц в нескольких схемах, это все равно приведет к сбою, но это должно помочь, если вы этого не сделаете.