我看到a PHP webapp中的UT failures每晚都在Travis CI中与PHP运行:
$ php --version
PHP 7.2.0-dev (cli) (built: Dec 4 2016 22:49:34) ( ZTS )这是失败的测试用例:
$payments = PaymentsHelper::refunds('DE0000000001', '2016-04-01', '2017-04-01');
$this->assertNotNull($payments);
$this->assertEquals(0, count($payments));测试失败
1) PaymentsHelperTest::test_refunds_within_lifetime
count(): Parameter must be an array or an object that implements Countable目前正在测试的代码包含调试日志,显示refunds()的返回值确实是一个数组:
Array
(
[0] => Payment Object
(
...
)
)我是不是每晚都会碰到PHP中的bug?
发布于 2016-12-06 00:26:50
我进一步调试了这个问题,并意识到错误发生在代码的早期,依赖项返回NULL,而代码调用count(NULL)
$bonds = $bond_factory->find_all(/* ... */);
if (count($bonds) > 0)
{
//...
}我决定使用null检查来保护对count()的调用:
$bonds = $bond_factory->find_all(/* ... */);
if (!is_null($bonds) && count($bonds) > 0)
{
//...
}PHP 7.2.0-dev现在对它的输入显然不那么宽容了。
发布于 2017-12-27 00:59:45
传递警告的另一种方式..
if ( count( $bonds ? : [] ) ) { .... }https://stackoverflow.com/questions/40976906
复制相似问题