【问题标题】:How can I use PHPUnit's DBUnit with a Microsoft SQL Server database?如何将 PHPUnit 的 DBUnit 与 Microsoft SQL Server 数据库一起使用?
【发布时间】:2017-09-16 05:44:53
【问题描述】:

我正在使用 PHPUnit 和 DBUnit 为在命令行上运行并将数据插入 Microsoft SQL Server 数据库的 PHP 应用程序创建测试。

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 方法可以做到这一点。

【问题讨论】:

    标签: php sql-server zend-framework phpunit dbunit


    【解决方案1】:

    如果您的问题是 PDO 连接,我建议您尝试使用与 SQL Server Driver for PHP 捆绑的 pdo_sqlsrv 驱动程序。您必须使用的连接字符串如下所示:

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

    【讨论】:

    • 谢谢。不幸的是,看起来 PHP 的 SQL Server 驱动程序不适用于 RHEL6。即使是这样,我认为这并不意味着它可以与 DBUnit 一起使用,它明确地只适用于 MySQL、PostgreSQL、Oracle 和 SQLite。我已经使用 MS ODBC Driver 13 为我的主要代码建立了成功的 PDO 连接,但是 PHPUnit 的 DBUnit 包似乎正在检查驱动程序并且只允许它支持的驱动程序。
    猜你喜欢
    • 1970-01-01
    • 2012-02-15
    • 2021-02-05
    • 1970-01-01
    • 1970-01-01
    • 2016-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多