🦁
PHPUnit で配列を比較するパターン3種
PHPUnit にて比較で使う3つのメソッド、
assertSame()
assertEquals()
-
assertEqualsCanonicalizing()
※PHPUnit v7.5 以降
で配列を比較する場合の使い分けをまとめました。
比較する配列
比較元(これと同じかどうかを見る)
$actual = [
0 => 'foo',
1 => 'bar',
];
比較対象
1. キーも並び順も同値の配列
$arr1 = [
0 => 'foo',
1 => 'bar',
];
2. キーは同値だが並び順が異なる配列
$arr2 = [
1 => 'bar',
0 => 'foo',
];
3. キーも並び順も異なる配列
$arr3 = [
'hoge' => 'bar',
'fuga' => 'foo',
];
assertSame()
値、キーおよび並び順が同値であることを検証
// OK キーも並び順も同値の配列
$this->assertSame($arr1, $actual);
// NG キーは同値だが並び順が異なる配列
$this->assertSame($arr2, $actual);
// NG キーも並び順も異なる配列
$this->assertSame($arr3, $actual);
assertEquals()
値およびキーが同値であることを検証(並び順は不問)
// OK キーも並び順も同値の配列
$this->assertEquals($arr1, $actual);
// OK キーは同値だが並び順が異なる配列
$this->assertEquals($arr2, $actual);
// NG キーも並び順も異なる配列
$this->assertEquals($arr3, $actual);
assertEqualsCanonicalizing()
値が同値であることを検証(キーおよび並び順は不問)
// OK キーも並び順も同値の配列
$this->assertEqualsCanonicalizing($arr1, $actual);
// OK キーは同値だが並び順が異なる配列
$this->assertEqualsCanonicalizing($arr2, $actual);
// OK キーも並び順も異なる配列
$this->assertEqualsCanonicalizing($arr3, $actual);
Discussion