Я использую PHPUnit и DBUnit для создания тестов для приложения PHP, которое запускается из командной строки и вставляет данные в базу данных Microsoft SQL Server.
Документация по DBUnit (https://phpunit.de/manual/current/en/database.html#database.supported-vendors-for-database-testing) утверждает, что Microsoft SQL Server не поддерживается, но доступен через Zend Framework или Doctrine 2.
Когда я пытаюсь:
$pdo = new PDO( "odbc:Driver={ODBC Driver 13 for SQL Server};Server=redacted", $user, $passwd );
$this->createDefaultDBConnection($pdo, $db);
Не удивительно, что я получаю следующую ошибку:
PHPUnit_Extensions_Database_Exception: Could not find a meta data driver for odbc pdo driver.
Я нашел документацию Zend Framework, в которой показано, как использовать PHPUnit для написания тестов, связанных с реляционными базами данных (https://framework.zend.com/manual/1.10/en/zend.test.phpunit.db.html), и я думаю, что я мог бы заставить это работать, если бы я лучше понимал Zend, так что, возможно, мне нужна помощь в понимании того, как получить доступ к классам Zend без написания всего приложения Zend.
Но, возможно, есть какой-то не Zend способ сделать это.
Если ваша проблема связана с подключением к PDO, я бы порекомендовал попробовать использовать драйвер pdo_sqlsrv, который поставляется вместе с Драйвер SQL Server для PHP. Строка подключения, которую вы должны использовать, будет выглядеть примерно так:
new PDO("sqlsrv:Server=localhost;Database=testdb", "UserName", "Password");
Других решений пока нет …