我正在尝试从闭包中实例化并启动PHPUnitTest,但我不断收到此消息:
mytest :: authenticate_test例外:序列化'关闭'不允许
它在闭包外工作没有任何问题,路由由Aura Router管理。
class mytest extends TestCase {
public function authenticate_test() {
// ...
}
}
$runner = 'PHPUnit_TextUI_TestRunner';
$suite = new PHPUnit_Framework_TestSuite('PHPUnit');
$suite->addTest(new mytest("authenticate_test"));
$map->attach('api.v1.', '/api/v1', function ($map) use($runner, $suite) {
$map->route('tests', '/tests', function ($request, $response)
use($runner, $suite) {
$runner::run($suite); // <-- Error comes here
});
});
我该如何处理?
请帮我解决这个问题。
提前致谢。
答案 0 :(得分:1)
this answer似乎掌握了问题的解决方案。
问题来自这样一个事实:PHPUnit将系统中的所有$ GLOBAL序列化为必要的,以便在测试运行时备份它们。然后在测试完成后恢复它们。但是,如果您的GLOBAL空间中有任何闭包,则会导致问题。
尝试通过相应的PHPDoc禁用$GLOBALS
的备份:
/**
* @backupGlobals disabled
*/
class mytest extends TestCase {
public function authenticate_test() {
// ...
}
}