在 PHPUnit 测试中无法访问全局 pdo 连接

我开始在我的项目中使用 PHPUnit,我需要测试一些数据是否已成功存储在数据库中。


我的问题是无法访问在名为 $connpdo 的单独文件中创建的 PDO 连接。我真的不明白为什么。


这是我的代码:


<?php

include_once("database_inc.php");


use PHPUnit\Framework\TestCase;


function save_twins($auto_id = 412184){

    global $connpdo;

    $query = "select quality_inspection from dqa_manifest_upload_rules where auto_id = $auto_id";

    $stmt = $connpdo->query($query);

    $row = $stmt->fetch(PDO::FETCH_ASSOC);

    $quality = $row["quality_inspection"];

    return $quality;

}


class Test_save_twins extends TestCase

{

    public function testExamples()

    {

        $this->assertEquals('A', save_twins(412184));

    }

}

?>

$connpdo 变量在文件database_inc.php中创建


$connpdo = new PDO("mysql:host=$cfgiDbHost;dbname=$cfgiDbDatabase;charset=utf8", $cfgiDbUser, $cfgiDbPasswd);

我也尝试过不使用 global,但我不知道会发生什么。也许使用命名空间?:


use PHPUnit\Framework\TestCase;

我想也许 pdo 没有启用,但我已经检查过php -m,我看到了那些模块:



德玛西亚99
浏览 123回答 1
1回答

慕码人2483693

好吧,几个月后我明白了 PHPunit 是如何工作的。如果它在方法之外,它不会读取数据库的 include_once。我将它移到函数内部,并且在数据库的同一台服务器上更改了远程环境的 phpUnit 环境,因此允许连接。在这两项更改之后,我的测试正在运行:&nbsp;https ://www.screencast.com/t/O2ccmcxt2
打开App,查看更多内容
随时随地看视频慕课网APP