Wenn ich die Methode assertEquals() in der Klasse PHPUnit_Framework_Testcase verwende und vergleiche:
_false_ gegen _NULL_,
_leerer String_ gegen _false_,
_leerer String_ gegen _NULL_
Alle Tests werden erfolgreich bestanden. Aber kein Wert ist dem anderen gleich. Also vergleicht assertEquals mit dem Operator "==" statt mit "===" oder so ähnlich. Denke es soll so sein wie es ist. Aber warum?
Wir haben assertSame()
für ===
Vergleiche.
Okay perfekt. Die Namen sind etwas irreführend. Aber es ist meine Schuld. Das tut mir leid.
Aber assertSame()
vergleicht nur true
, wenn die Objekte gleich sind.
class Foo {}
$this->assertSame(new Foo(), new Foo());
Failed asserting that two variables reference the same object.
Ich brauche einen Code, der so funktionieren kann:
$this->assertSame(new Foo(null), new Foo("")); // false
$this->assertSame(new Foo(null), new Foo(null)); // true
$this->assertSame(new Foo(""), new Foo("")); // true
Hilfreichster Kommentar
Wir haben
assertSame()
für===
Vergleiche.