我将PHPUnit测试放入现有项目中.全局常量变量被广泛使用.在我的单元测试函数失败,因为全局变量为null.这是一个失败测试的例子
static $secret_key = "a secret Key";
class secret_key_Test extends PHPUnit_Framework_TestCase
{
function test_secret_key()
{
global $secret_key;
$this->assertEquals($secret_key, "a secret Key");
}
}
>> Failed asserting that 'a secret Key' matches expected null
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激
更新:我尝试删除静态和添加
protected $backupGlobals = FALSE;
Run Code Online (Sandbox Code Playgroud)
对班级宣言没有成功.
Mal*_*ich 11
这个答案不起作用.我在这里问了一个几乎完全相同的问题,最后给出了一个更有意义的答案; 你不能覆盖PHPUnit将看到的测试类中的受保护属性$ backupGlobals.如果您在命令行上运行,似乎可以通过创建xml配置文件并将backupGlobals设置为false来使Globals工作.
编辑:您需要声明$ secret_key全局并在使用PHPUnit时在全局空间中为其分配值.PHP默认将全局初始化变量放入全局命名空间,但PHPUnit在备份全局变量时更改此默认值!
需要进行以下更改:
global $secret_key; // Declaring variable global in global namespace
$secret_key = "a secret Key"; // Assigning value to global variable
Run Code Online (Sandbox Code Playgroud)
您的代码现在应该可以使用
你应该问phpunit不要备份全局变量
protected $backupGlobals = FALSE;
Run Code Online (Sandbox Code Playgroud)
就像在S. Bergmann的原始文章中所说:http://sebastian-bergmann.de/archives/797-Global-Variables-and-PHPUnit.html
| 归档时间: |
|
| 查看次数: |
8596 次 |
| 最近记录: |