2010-09-12 100 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