我确定我测试的数组为空。即使执行 var_dump(array)
也会打印 array(0) {
}
。
但是测试 $this->assertNull($array);
失败。
相反,当我测试下面的代码时,它进入 if
条件:
if ($array == null) {
echo "Entered";
} else {
echo "Not Entered";
}
我不明白为什么会这样。如果有人知道原因请解释一下。
最佳答案
array(0) { }
是一个空数组。
null
表示根本没有数组。
它们不是同一件事。
== 的问题在于它试图输入不同的值来匹配它们。空数组是“falsy”,null
也是如此。
如果您想看到差异,请使用 ===
代替,它不会输入 juggle 并且还会比较类型;
$array1 = null;
$array2 = array();
if ($array1 == null) echo '1'; // $array1 is "similar to" null.
if ($array1 === null) echo '2'; // $array1 is null
if ($array2 == null) echo '3'; // $array2 is "similar to" null
if ($array2 === null) echo '4'; // $array2 is null
>>> 123
关于PHPUnit assertNull() 测试失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17911082/