Quando eu uso o método assertEquals () na classe PHPUnit_Framework_Testcase e compare:
_false_ contra _NULL_,
_cadeia vazia_ contra _falso_,
_cadeia vazia_ contra _NULL_
Todos os testes passam com sucesso. Mas nenhum valor é igual um ao outro. Portanto, assertEquals compara com o operador "==" em vez de "===" ou algo parecido. Pense que deveria ser como é. Mas por que?
Temos assertSame()
para ===
comparações.
Ok, perfeito. Os nomes são um pouco enganadores. Mas é minha culpa. Desculpe por isso.
Mas assertSame()
só comparará true
, se os objetos forem iguais.
class Foo {}
$this->assertSame(new Foo(), new Foo());
Failed asserting that two variables reference the same object.
Preciso de um código que funcione assim:
$this->assertSame(new Foo(null), new Foo("")); // false
$this->assertSame(new Foo(null), new Foo(null)); // true
$this->assertSame(new Foo(""), new Foo("")); // true
Comentários muito úteis
Temos
assertSame()
para===
comparações.