VisualPHPUnit Test erhalten wird.VisualPHPUnit - Versuch, die Eigenschaft von Nichtobjekt zu erhalten, wenn eine Eigenschaft des Objekts
Nein, es ist kein Array.
class TestGetChildren extends PHPUnit_Framework_TestCase
{
protected $objs;
protected function setUp()
{
$objs = array();
$i=0;
while ($i<20) {
$obj = (object) array (
'ID'=>$i,
'DIRID'=>0
);
if ($i>5) $obj->DIRID = $i-6;
if ($i>10) $obj->DIRID = 7;
$objs[] = $obj;
$i++;
}
$this->objs = $objs;
}
public function testGetChildren() {
$objs = $this->objs;
//var_dump($objs);
print_r(gettype($objs));
assert('array' == gettype($objs));
print_r($objs[19]->ID);
$vm = new FoldersPermissions($objs);
//$children = $vm->getChildren($vm->folders[0]);
foreach ($vm->folders as $obj) {
$children = $vm->getChildren($obj);
print_r($obj->ID."|".count($children)."\n");
// 0 is a special case, and 1 has 10 children
if (4 >= $obj->ID && 1 < $obj->ID) {
//print_r(($children));
$this->assertTrue(1 == count($children));
}
if (7 == $obj->ID){
$this->assertTrue(count($children) == 9);
}
}
}
}
Auch Ausgang:
Debugging Output
19
So ist es tatsächlich funktioniert. Was?
Auch scheinbar objs $ kein Array ...
bearbeiten zu klären: Ich änderte testGetChildren wie so:
public function testGetChildren() {
$objs = $this->objs;
//var_dump($objs);
print_r(gettype($objs));
assert('array' == gettype($objs));
und bekam dies als Antwort:
NULL Warnung: assert(): Assertion fehlgeschlagen
Aus dem Code, den Sie veröffentlicht haben $ objs * ist * ein Array. $ objs [19] ist ein Element dieses Arrays und dies scheint ein Objekt von stdClass zu sein. – liquorvicar
Sie würden das denken, nicht wahr? Anscheinend ist es ein NULL. Kurioserweise wird der Test jedoch erfolgreich abgeschlossen. – Esa