【问题标题】:PHPUnit assertNull() test failsPHPUnit assertNull() 测试失败
【发布时间】:2013-07-28 11:28:46
【问题描述】:

我确定我测试的数组为空。即使做var_dump(array) 打印array(0) { }

但是测试$this->assertNull($array);失败了。
相反,当我测试下面的代码时,它会进入if 条件:

if ($array == null) {
    echo "Entered";
} else {
    echo "Not Entered";
}

我不明白为什么会这样。如果有人知道原因,请解释一下。

【问题讨论】:

    标签: php phpunit assertions


    【解决方案1】:

    array(0) { } 是一个空数组。

    null 根本就没有数组。

    它们不是一回事。

    == 的问题在于它试图通过键入来调整值以匹配它们。空数组是“假的”,null 也是。

    如果想看区别,就改用===,不打juggle,也比较type;

    $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
    

    More on the comparison operators here.

    【讨论】:

    • 那为什么if ($array == null)很满意。
    • 因为它正在对值进行类型转换以比较它们。尝试使用$array === null。并查看php.net/manual/en/types.comparisons.php 以了解 PHP 的比较。
    • 感谢您的示例和解释。
    猜你喜欢
    • 1970-01-01
    • 2017-06-24
    • 2013-08-26
    • 1970-01-01
    • 1970-01-01
    • 2017-05-24
    • 2014-05-26
    • 2013-05-04
    • 2015-10-31
    相关资源
    最近更新 更多