首页 > 解决方案 > 致命错误的 PHPUnit 集成测试:允许的内存大小已用完

问题描述

我想测试一下,如果我的应用程序记录了致命错误

PHP Fatal error:  Allowed memory size exhausted

到我的独白处理程序文件。我想为此编写一个集成测试。问题是当我触发错误时,PHPUnit 会停止。

/**
 * @return void
 */
public function testMemoryLimitExhaustedLogToMonolog(): void
{
    // set memory limit 100mb
    ini_set('memory_limit', '100M');

    while(true) {
        $memoryExhaustingArray[] = 1;
    }
    $this->assertThatMyLogFileHasCatchedTheOutOfMemoryException();
}

有没有办法在 PHP7 中测试致命的内存不足错误?

标签: phpunitphp-7monolog

解决方案


我认为,没有办法测试这个致命错误,因为 PHPUnit 在内存不足时会崩溃。此错误会触发脚本终止并且无法捕获:

在 PHP 中安全地捕获“允许的内存大小已耗尽”错误


推荐阅读