PHPUnit断言真一(1) - php

我正在查看PHPUnit,以下内容使我感到困惑。 PHPUnit是否处理int。 1和0为布尔值?在我目前的测试中,没有。

示例:$this->assertTrue(preg_match('/asdf/', 'asdf'));

在我的测试中,此操作失败,因为preg_match()返回int 1或0,并且只有在出现错误时才返回false。

很明显,由于比较总是返回布尔值,因此我认为它具有以下作用。 $this->assertTrue(preg_match('/asdf/', 'asdf') === 1);

我是否在我的preg_match中缺少某些内容,或者我的断言是为了使其....不那么严格?

编辑:
assertTrue是否要求类型匹配?有什么方法可以使断言变得不那么严格?

参考方案

PHP具有单独的boolean类型,其TRUEFALSE的值(不区分大小写的常数)与1和0的整数值不同。

使用严格比较(===)时,它不起作用:TRUE !== 1FALSE !== 0

当您使用类型杂耍时,TRUE转换为1,而FALSE转换为0(反之亦然,0转换为FALSE,任何其他整数都转换为TRUE)。因此,TRUE == 1FALSE == 0

在PHPUnit中,assertTrueassertFalse是类型相关的严格检查。 assertTrue($x)检查TRUE === $x是否与assertSame(TRUE, $x)相同,并且与assertEquals(TRUE, $x)不同。

在您的情况下,一种可能的方法是使用显式类型转换:

$this->assertTrue((boolean)preg_match('/asdf/', 'asdf'));

但是,PHPUnit恰好具有专用的断言,用于根据正则表达式检查字符串:

$this->assertRegExp('/asdf/', 'asdf');

PHP strtotime困境 - php

有人可以解释为什么这在我的服务器上输出为true吗?date_default_timezone_set('Europe/Bucharest'); var_dump( strtotime('29.03.2015 03:00', time()) === strtotime('29.03.2015 04:00�…

PHP-全局变量的性能和内存问题 - php

假设情况:我在php中运行一个复杂的站点,并且我使用了很多全局变量。我可以将变量存储在现有的全局范围内,例如$_REQUEST['userInfo'],$_REQUEST['foo']和$_REQUEST['bar']等,然后将许多不同的内容放入请求范围内(这将是适当的用法,因为这些数据指的是要求自…

php-casperjs获取内部文本 - php

我正在为casperjs使用php包装器-https://github.com/alwex/php-casperjs我正在网上自动化一些重复的工作,我需要访问一个项目的innerText,但是我尚不清楚如何从casperjs浏览器访问dom。我认为在js中我会var arr = document.querySelector('label.input…

PHP-将日期插入日期时间字段 - php

我已在数据库中使用datetime字段存储日期,使用PHP将“今天的日期”插入该字段的正确方法是什么?干杯, 参考方案 我认为您可以使用php date()函数

PHP-从最后一个循环中删除逗号 - php

我在循环时有一个PHP,如果是最后一个循环,我想从,中删除​​最后一个逗号echo '],'; while($ltr = mysql_fetch_array($lt)){ echo '['; echo $ltr['days']. ' ,'. $ltr['name…