PHPUnit错误未定义变量
Posted
技术标签:
【中文标题】PHPUnit错误未定义变量【英文标题】:PHPUnit error undefined variable 【发布时间】:2015-01-25 15:09:54 【问题描述】:我正在运行 phpunit 来测试我的 ZF2 应用程序。我在我的 Windows 机器(在 xampp 下)上尝试了它,它运行良好。但是,当我将其移至虚拟 Ubuntu 14.10 服务器时,每次测试都会出现以下错误:
Undefined variable: services
我去/etc/php5/cli/php.ini,设置报错如下:
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE
测试指向的代码来自我的 Module.php 文件之一
public function onBootstrap(MvcEvent $event)
$sharedEventManager = $event->getApplication()
->getEventManager()
->getSharedManager();
$sharedEventManager->attach('user', 'log-fail', function($event) use ($services)
$username = $event->getParam('username');
$log = $services->get('log');
$log->warn("Error logging user [$username]");
);
它专门抱怨$sharedEventManager->attach('user', 'log-fail', function($event) use ($services)
这一行。就像我说的,我尝试编辑 php.ini 文件来抑制这样的警告,但它不起作用。我还缺少什么吗?
【问题讨论】:
在virtual Ubuntu 14.10 server
上检查您的 PHP 版本。
您显示的代码中未定义变量 $services。
我正在运行 php 5.5.12
你在 Windows 机器上的 PHP 版本是什么。
问题应该是:为什么这个测试在 Windows 上没有失败?
【参考方案1】:
好的,我想通了。正如 Indrasinh Bihola 所说:我遗漏了一部分。嗯,书做到了。我借用的 sn-p 来自较早的部分,但它跳过了关键部分,并且没有说明原始部分在哪里(37 页!)。另外,不要找借口,但我从未在 PHP 中使用过闭包,而且我不知道 use($services) 实际做了什么。现在我愿意。我不会再犯同样的错误了。
【讨论】:
但是,是的,我现在确实感觉很愚蠢,我也应该这样做。 :(以上是关于PHPUnit错误未定义变量的主要内容,如果未能解决你的问题,请参考以下文章
当我使用标志覆盖率运行 Phpunit 时,出现错误:未定义的变量工厂
PHPUnit 错误:调用未定义的方法 Tests\Unit\ExampleTest::visit()