handlename's blog

コード片など

limeのis_deeplyが使いにくいので自前で書いてみた

limeのis_deeply。配列を比較できて便利だけど、いかんせん結果が見にくい。

と、いうわけで自前で書いてみた。

たとえばこんな配列を渡すと、

$a = array(
    'hoge' => 'hogehog',
    'huga' => 100,
    'moga' => array(
        'a' => 'aaa',
        'b' => 'bbb',
    ),
);

$b = array(
    'hoge' => 'hogehoge',
    'huga' => '100',
    'moga' => array(
        'a' => 'aaa',
        'b' => 'bb',
    ),
);

$diffs = is_deeply($a, $b);

こんな結果が帰ってくる。

Array
(
    [[hoge]] => Array
        (
            [0] => hogehog (string)
            [1] => hogehoge (string)
        )

    [[huga]] => Array
        (
            [0] => 100 (integer)
            [1] => 100 (string)
        )

    [[moga][b]] => Array
        (
            [0] => bbb (string)
            [1] => bb (string)
        )

)

これをもっと見やすく整形してlimeを継承して使うようにすれば、だいぶテスト時のいらいらが軽減されるはず。