Posted at

[PHPUnit]assertEqualsよりもassertSameを使おう

More than 1 year has passed since last update.

題名のまんまですが、PHPUnitのAssertEqualsではなくassertSameを使おうという話し。


assertEqualsとassertSameの違い

おさらいですがphpでは緩い比較と厳密な比較があります。

'1' == 1  //true

'1' === 1 //false

PHPUnitでは、assertEqualsが緩い比較、assertSameが厳密な比較に相当します。


厳密な比較を使う理由

緩い比較は、便利な面もあるんですがよく理解してないと事故ります。

下記の例では、trueで評価されます。

0 == 'hoge'//true

2 == '2a' //true

上記のような不具合は場合によっては、見つけるのが困難だったりします(汗

不具合のリスクを抱えるぐらいなら、最初から厳密にチェックしておこうねって事ですね。

もう一つの理由としては、パフォーマンス的には厳密比較の方が良いからです。

というのも、緩い比較は、式を評価する前に暗黙の型変換を行うため、手間が少し掛かってます。

以上から、assertSameを使う事をお勧めします。