2016-12-05 10 views
4

を実装して、配列またはオブジェクトでなければなりません、私は毎晩PHPに対してトラビスCIで動作しているa PHP webappUT failuresを見ています: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 

モーメントCONで試験されているコードrefunds()の戻り値を示すTAINSのデバッグログは確かアレイです:

Array 
(
    [0] => Payment Object 
     (
... 
     ) 
) 

私は毎晩PHPのバグを打つだろうか?

+0

- PHPインタラプタの未発表バージョンは生産準備ができていないことを驚くべきことではありません。あなたのクラスの単体テストテストが失敗したとしても、PHPが間違っていると非難するには十分な証拠ではありません。私は最初に、最後のコミットであなたのコードを破った可能性を調査します。 – HPierce

+0

私はさらに問題をデバッグし、エラーがより早く発生したことを認識しました。依存関係がNULLを返し、コードが 'count(NULL)'を呼び出します。 PHP 7.2.0-devは、入力にはあまり寛容ではありません。 – claudiopro

答えて

3

私は、さらに問題をデバッグし、エラーを実現したが、以前の依存性が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は、明らかに入力に対してあまり寛容ではありません。

0

パス警告のための別の方法...たぶん

if (count($bonds ? : [])) { .... } 
関連する問題