来自代码的Phpunit测试给出了一个例外:序列化';关闭';是不允许的-拉雷维尔

来自代码的Phpunit测试给出了一个例外:序列化';关闭';是不允许的-拉雷维尔,php,laravel,laravel-5.1,Php,Laravel,Laravel 5.1,我有这个代码在我的路线(只是为了让它工作) 可在此处找到从代码运行测试的代码示例: 但是当我运行这个程序时,我得到了一个错误:异常:不允许序列化“Closure” 我无法找出导致此错误的原因。我已经解决了此问题,但它不是一个稳定的解决方案,我想知道一些更好的解决方案。现在我将把这个作为答案发布 在:/vendor/sebastian/global state/src/Snapshot.php行313 替换此行: $this->globalVariables[$key] = unseria

我有这个代码在我的路线(只是为了让它工作)

可在此处找到从代码运行测试的代码示例:

但是当我运行这个程序时,我得到了一个错误:异常:不允许序列化“Closure”


我无法找出导致此错误的原因。

我已经解决了此问题,但它不是一个稳定的解决方案,我想知道一些更好的解决方案。现在我将把这个作为答案发布

在:/vendor/sebastian/global state/src/Snapshot.php313

替换此行:

$this->globalVariables[$key] = unserialize(serialize($GLOBALS[$key]));
与:

我觉得这句话很奇怪。该函数只是存储全局数据,我不知道为什么它会在立即取消序列化数据的同时序列化数据。

请参阅

您可以在配置中关闭此选项,例如:
应用/测试

该问题已在该库的较新版本中修复。为什么此最新版本仍然存在错误,尚未修复。看起来尚未修复,请参阅:
$this->globalVariables[$key] = unserialize(serialize($GLOBALS[$key]));
$this->globalVariables[$key] = $GLOBALS[$key];
You can turn off this, in config, example:

    <?xml version="1.0" encoding="UTF-8" ?>
<phpunit bootstrap="application/tests/bootstrap.php" backupGlobals="false">
    <testsuites>
        <testsuite name="TestSuite">
            <directory>application/tests</directory>
        </testsuite>
    </testsuites>
</phpunit>