如何使用phpunit测试内部数组

时间:2010-09-12 07:45:18

标签: 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()循环。

请为此建议一些解决方案。

3 个答案:

答案 0 :(得分:2)

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

}

这部分在我的问题中工作得很好。实际上我并没有在测试场景中获得阵列本身。所以它不会进入foreach()。现在它解决了。我把args传递给函数时出错了。

答案 1 :(得分:0)

您也可以使用

assertArraySubset()

来自:https://phpunit.de/manual/current/en/appendixes.assertions.html#appendixes.assertions.assertArraySubset

另一个解决方案是比较数组,然后检查是否为true:

$arrays_are_equal = ($array1 == $array2); // or === if you want identical
$this->assertTrue($arrays_are_equal);

答案 2 :(得分:-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
            )
    )