При использовании скаляра:
$null = null; $this->assertNull($null);
Проверить OK
$null = 'not null'; $this->assertNull($null);
Тест не пройден
При использовании Object:
$this->assertEquals(null, $menu->getChild('Projects'));
Проверьте OK или Fail, если $ menu-> getChild («Проекты») является нулевым или нет
$this->assertNull($menu->getChild('Projects'));
Висит и я получаю ошибку: zend_mm_heap поврежден
При использовании AssertNull я не получаю такое же поведение, как AssertEquals (null, $ var) ; На данный момент я запрещаю использование AssertNull, но мне было интересно, может ли кто-нибудь из вас объяснить, что происходит …
Объект имеет тип: Knp \ Menu \ MenuItem (объект из библиотеки php knpmenu)
Проблема заключается в проблеме рекурсии, связанной с функцией из библиотеки phpunit.
класс: PHPUnit / Util / Type
function: recursiveExport
preg_match_all('/\n \[(\w+)\] => Array\s+\*RECURSION\*/', print_r($value, TRUE), $matches);
Как вы видите, у ребенка есть ссылка на родительский объект, который является причиной тупика.
Но когда я прочитал документацию print_r , сказано:
До PHP 4.0.4 print_r () будет продолжаться вечно, если задан массив или объект, который содержит прямую или косвенную ссылку на себя. Примером является print_r ($ GLOBALS), потому что $ GLOBALS сама является глобальной переменной, которая содержит ссылку на себя.
Я использую :
PHPUnit 3.7.10 от Себастьяна Бергмана.
PHP 5.4.7 (cli) (построено: 12 сентября 2012 23:48:31)
Мое заключение на данный момент – НЕ использовать assertNull, но AssertEquals