2012-04-03 18 views
-1

VisualPHPUnitテスト。VisualPHPUnit - オブジェクトのプロパティを取得するときに非オブジェクトのプロパティを取得しようとしています

いいえ、配列ではありません。また

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); 
      } 
     } 
    } 


} 

、出力:

Debugging Output 
19 

だから、それが実際に動作します。 何ですか?明確にする

はまた、明らかに$ OBJSが配列ではありません...

編集

public function testGetChildren() { 
    $objs = $this->objs; 
    //var_dump($objs); 
    print_r(gettype($objs)); 
    assert('array' == gettype($objs)); 

と応答としてこれを得た:

私はそうのようなtestGetChildrenを変更

NULL警告:assert():アサーションが失敗しました

+0

投稿したコードから$ objs *は配列です。 $ objs [19]はその配列の要素であり、これはstdClassのオブジェクトのようです。 – liquorvicar

+0

あなたはそうは思わないでしょう。どうやらそれはNULLです。興味深いことに、テストは正常に完了します。 – Esa

答えて

1

さて、関数testGetChildrenには大文字小文字を区別していないため、クラスと同じ名前が付いているため、エラーの原因がわかりました。

おそらく、この関数はコンストラクタとして解釈され、継承するクラスを壊します。

0

Liquorvicarが正しければ、$ objsは配列で、$ objs-array 20番目のオブジェクトのIDを出力しているだけです(配列は0から19までです)。だからうまくいく。 print_r($ objs)を試してみると、それは配列です。

+0

いいえ、いいえ。私は、特にそのprint_r行から非オブジェクトの通知を取得しようとしています。 – Esa

+0

あなたは 'setup'を呼んでいません、それははっきりしていませんか?コードの一部だけを見ているうちに、あなたが何をしているのか、何を言っているのかは分かりません。 – raPHPid

+0

ああ。これはVisualPHPUnitのテストクラスです。セットアップが実行されない場合でも、なぜprint_rから正しい出力が得られますか?私は完全なテストコードを追加しました。私はおそらく最初にやっていたはずです。 – Esa

関連する問題