2010-09-12 127 views
4

我必須用內部數組測試一個數組。如何用phpunit測試內部數組

我的數組看起來像下面這樣。

$testdata=Array 
    (
     [0] => Array 
      (
       [label] => 'Ammy' 
       [idr] => 'user7' 
       [rel] => 7 
      ) 

     [1] => Array 
      (
       [label] => 'sidh' 
       [idr] => user8 
       [rel] => 8 
      ) 

     [2] => Array 
      (
       [label] => 'Alan' 
       [idr] => 'user9' 
       [rel] => 9 
      ) 
    ) 
在這種情況下我的

要求是無論使用的phpunit assertArrayHasKey()的斷言爲內部陣列存在的鍵來斷言。我試圖這樣做

foreach ($testdata as $values) { 
//print_r($values); 
    $this->assertArrayHasKey('idr', $values); 
    $this->assertArrayHasKey('rel', $values); 

} 

但這不適合我。即使控件不在foreach()循環中。

請爲我提供一些解決方案。

+1

如果它從來沒有因此導致的環路,則有在其他地方是一個問題,我們不能僅僅告訴你發佈的代碼。您的使用情況是正確的。 – prodigitalson 2010-09-12 07:55:38

回答

2
foreach ($testdata as $values) { 
//print_r($values); 
    $this->assertArrayHasKey('idr', $values); 
    $this->assertArrayHasKey('rel', $values); 

} 

這一部分在我的問題能正常工作。實際上我並沒有在測試場景中獲得陣列本身。所以它不會進入foreach()。現在它解決了。我在向函數傳遞參數時犯了一個錯誤。

-1

我相信那個控件不在foreach循環中。

刪除whole

$testdata= Array 
    (
     [0] => Array 
      (
       [label] => 'Ammy' 
       [idr] => 'user7' 
       [rel] => 7 
      ) 

     [1] => Array 
      (
       [label] => 'sidh' 
       [idr] => user8 
       [rel] => 8 
      ) 

     [2] => Array 
      (
       [label] => 'Alan' 
       [idr] => 'user9' 
       [rel] => 9 
      ) 
    ) 
+0

在實際情況下整體不存在。我只是把它放在這裏使它更具描述性。任何我會編輯的方式。你能否建議在phpunit中使用foreach()。 – sidhartha 2010-09-12 08:07:35

+1

@sidharth foreach循環用於獲取數組的值... – 2010-09-12 08:09:51

+1

@sidhartha:是的,一個foreach可以在phpunit中使用。 – prodigitalson 2010-09-12 08:14:26