gpt4 book ai didi

PHPUnit 和全局变量

转载 作者:可可西里 更新时间:2023-10-31 23:10:11 25 4
gpt4 key购买 nike

我正在学习和探索 PHPUnit 与 PHP 5.2.9 的应用,但遇到了全局问题。我已将 $backupGlobals 设置为 FALSE,包括文档“@backupGlobals disabled”,这似乎不会影响 PHPUnit 的全局变量备份行为。有什么我想念的吗?我需要更改 PHPUnit 的 xml 文件吗?创建 Bootstrap ?

配置.php:

$testString = 'Hello world!';

basicApp.php:

require ('D:\data\clients\security.ca\web_sites\QRASystems.com\wwwroot\__tests\BasicApp\config.php');

class BasicApp {

public $test;

public function __construct() {
global $testString;
$this->test = $testString;
}

public function getTest() {
return $this->test;
}

public function setTest($test){
$this->test = $test;
}

BasicAppTest.php:

require ('D:\data\clients\security.ca\web_sites\QRASystems.com\wwwroot\__tests\BasicApp\BasicApp.php');

class BasicAppTest extends PHPUnit_Framework_TestCase{
protected $testClass;
protected $backupGlobals = FALSE;
protected $backupGlobalsBlacklist = array('testString');

public function SetUp(){
$this->testClass = new BasicApp;
$this->testClass->bootstrap();
}

public function testGlobal(){
echo $this->testClass->getTest();
$this->assertNotNull($this->backupGlobals);
$this->assertFalse($this->backupGlobals);
$this->assertNotEmpty($this->testClass->test);
}

public function testMethods(){
$this->testClass->setTest('Goodbye World!');
echo $this->testClass->getTest();
$this->assertNotNull($this->backupGlobals);
$this->assertNotNull($this->testClass->test);
if (empty($this->testClass->test)) echo 'Method set failed!';
}
}

testGlobal() 在 $this->assertNotEmpty($this->testClass->test) 上失败,表明 $this->backupGlobals 设置为 FALSE,并且 PHPUnit 仍在备份全局变量。

编辑:我通过进行以下更改来实现此目的-

BasicAppTest.php:

    protected $backupGlobals = FALSE; <- REMOVED
protected $backupGlobalsBlacklist = array('testString'); <- REMOVED

配置.php:

global $testString; <- ADDED
$testString = 'Hello world!';

我很惊讶,这在之前的某个地方还没有被涉及到!

最佳答案

在您的测试用例中,您正在定义 PHPUnit 看不到的 $backupGlobals 属性。由于该属性受到保护,您可以在构造函数中将其设置为 false,但 PHPUnit 使用其构造函数来传递有关如何运行测试方法的信息。相反,创建一个 phpunit.xml configuration filebackupGlobals 属性设置为 false

<phpunit backupGlobals="false">
<testsuites>
<testsuite name="Test">
<directory>.</directory>
</testsuite>
</testsuites>
</phpunit>

关于PHPUnit 和全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9672178/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com