gpt4 book ai didi

phpunit assertNull 损坏了 zend_mm_heap

转载 作者:搜寻专家 更新时间:2023-10-31 21:13:37 25 4
gpt4 key购买 nike

使用标量时:

$null = null;
$this->assertNull($null);

测试成功

$null = 'not null';
$this->assertNull($null);

测试失败

使用对象时:

$this->assertEquals(null, $menu->getChild('Projects'));

测试 OK 或 Fail 关于 $menu->getChild('Projects') 是否为空

$this->assertNull($menu->getChild('Projects'));

挂起,我得到错误:zend_mm_heap corrupted

当使用 AssertNull 时,我没有得到与 AssertEquals(null, $var) 相同的行为;目前,我禁止使用 AssertNull,但我想知道你们中是否有人可以解释发生了什么......

最佳答案

对象的类型:Knp\Menu\MenuItem(来自 knpmenu php 库的对象)

问题是与 phpunit 库中的函数相关联的递归问题。

类:PHPUnit/Util/Type

函数:递归导出

preg_match_all('/\n            \[(\w+)\] => Array\s+\*RECURSION\*/', print_r($value, TRUE), $matches);

$value content

如您所见,子对象引用了父对象,这就是死锁的原因。

但是当我阅读print_r 的文档时,它指出:

Prior to PHP 4.0.4, print_r() will continue forever if given an array or object that contains a direct or indirect reference to itself. An example is print_r($GLOBALS) because $GLOBALS is itself a global variable that contains a reference to itself.

我正在使用:

PHPUnit 3.7.10 by Sebastian Bergmann.

PHP 5.4.7 (cli) (built: Sep 12 2012 23:48:31)

目前我的结论是使用assertNullAssertEquals

关于phpunit assertNull 损坏了 zend_mm_heap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13764826/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com