Lorsque j'utilise la méthode assertEquals() dans la classe PHPUnit_Framework_Testcase et que je compare :
_false_ contre _NULL_,
_chaîne vide_ contre _faux_,
_chaîne vide_ contre _NULL_
Tous les tests passent avec succès. Mais aucune valeur n'est égale l'une à l'autre. Donc assertEquals se compare à l'opérateur "==" au lieu de "===" ou quelque chose comme ça. Je pense que c'est censé être comme ça. Mais pourquoi?
Nous avons assertSame()
pour les comparaisons ===
.
D'accord parfait. Les noms sont un peu trompeurs. Mais c'est ma faute. Désolé.
Mais assertSame()
ne comparera que true
, si les objets sont les mêmes.
class Foo {}
$this->assertSame(new Foo(), new Foo());
Failed asserting that two variables reference the same object.
J'ai besoin d'un code qui peut fonctionner comme ceci:
$this->assertSame(new Foo(null), new Foo("")); // false
$this->assertSame(new Foo(null), new Foo(null)); // true
$this->assertSame(new Foo(""), new Foo("")); // true
Commentaire le plus utile
Nous avons
assertSame()
pour les comparaisons===
.