如何将PHPUnit的DBUnit与Microsoft SQL Server数据库一起使用?
问题描述:
我正在使用PHPUnit和DBUnit为在命令行上运行并将数据插入Microsoft SQL Server数据库的PHP应用程序创建测试。如何将PHPUnit的DBUnit与Microsoft SQL Server数据库一起使用?
的DBUnit的文件(https://phpunit.de/manual/current/en/database.html#database.supported-vendors-for-database-testing)指出,微软的SQL Server不支持,而是通过Zend框架或学说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编写与r相关的测试(https://framework.zend.com/manual/1.10/en/zend.test.phpunit.db.html),我认为如果我更好地理解Zend,我可以让它工作,所以我需要的是有助于理解如何访问Zend类而不用编写整个Zend应用程序。
但也许有一些非Zend的方式来做到这一点。
答
如果您的问题是PDO连接,我会建议尝试使用与SQL Server Driver for PHP捆绑在一起的pdo_sqlsrv驱动程序。您必须使用的连接字符串如下所示:
new PDO("sqlsrv:Server=localhost;Database=testdb", "UserName", "Password");
谢谢。不幸的是,用于PHP的SQL Server驱动程序看起来不适用于RHEL6。即使这样做了,但我不认为这意味着它可以与DBUnit一起工作,DBUnit显然只能用于MySQL,PostgreSQL,Oracle和SQLite。我已经为我的主代码使用MS ODBC驱动程序13成功实现了PDO连接,但PHPUnit的DBUnit包似乎在检查驱动程序并仅允许它支持的驱动程序。 –