【Laravel】assertSameとassertEqualsの違いは?

こんにちは!CODE CLUB965のKです!

今回は、Laravelに標準搭載されているPHPUnitのAssertメソッドである、assertSameとassertEqualsの違いについて書こうと思います。

assertSameとassertEqualsの違い

結論から言うと、assertSame が型を含めて値が等しいかを判定するのに対し、assertEqualsは型は無視して単純に値が等しいか判定する違いがあります。

分かりやすくいうと、

・assertSame は、「===」
・assertEquals は、「==」

ということです。

基本的には型も含めて等しいかテストするのが多いと思うので、assertSame を使うといいと思います。

具体例

例えば、

$val1 = 965;
$val2 = '965';

この値をテストする場合で考えます。

$this->assertSame($val1, val2); // false

$this->assertEquals($val1, val2); // true

上記を見たら分かるかと思いますが、assertSameの場合は型も含めて判定するので、$val1 は Number に対して $val2 は String なので判定は、false となります。

逆にassertEqualsの場合は、型は関係ないので true の判定となります。

最後に

基本的には型も含めて判定するassertSameを使用する方がいいと思います。

assertEquals を使用する場合は、何か意図があるかと思いますのでコメントを残した方が親切ですね。

それでは、また!

Follow me!