2017-04-19 5 views
0

J'utilise PHPUnit et DBUnit pour créer des tests pour une application PHP qui s'exécute sur la ligne de commande et insère des données dans une base de données Microsoft SQL Server.Comment puis-je utiliser DBUnit de PHPUnit avec une base de données Microsoft SQL Server?

La documentation DBUnit (https://phpunit.de/manual/current/en/database.html#database.supported-vendors-for-database-testing) indique que Microsoft SQL Server n'est pas pris en charge mais est accessible par le Zend Framework ou Doctrine 2.

Lorsque je tente:

$pdo = new PDO("odbc:Driver={ODBC Driver 13 for SQL Server};Server=redacted", $user, $passwd); 

$this->createDefaultDBConnection($pdo, $db); 

je reçois, sans surprise, l'erreur suivante:

PHPUnit_Extensions_Database_Exception: Could not find a meta data driver for odbc pdo driver. 

J'ai trouvé la documentation Zend Framework qui montre comment utiliser PHPUnit pour écrire des tests liés à r bases de données (https://framework.zend.com/manual/1.10/en/zend.test.phpunit.db.html), et je pense que je pourrais faire marcher ça si je comprenais mieux Zend, donc ce dont j'ai besoin, c'est d'avoir compris comment accéder aux classes Zend sans écrire une application Zend entière.

Mais peut-être y a-t-il un moyen non-Zend de le faire.

Répondre

0

Si votre problème concerne la connexion PDO, je vous recommande d'essayer d'utiliser le pilote pdo_sqlsrv fourni avec le SQL Server Driver for PHP. La chaîne de connexion que vous devez utiliser ressemble à ceci:

new PDO("sqlsrv:Server=localhost;Database=testdb", "UserName", "Password"); 
+0

Merci. On dirait que le pilote SQL Server pour PHP ne fonctionne pas avec RHEL6, malheureusement. Même si c'était le cas, je ne pense pas que cela puisse fonctionner avec DBUnit, qui ne fonctionne explicitement qu'avec MySQL, PostgreSQL, Oracle et SQLite. J'ai déjà fait une connexion PDO réussie en utilisant le pilote MS ODBC 13 pour mon code principal, mais le paquet DBUnit pour PHPUnit semble vérifier le pilote et ne permettre que ceux qu'il supporte. –