Когда я использую метод assertEquals () в классе PHPUnit_Framework_Testcase и сравниваю:
_false_ против _NULL_,
_empty string_ против _false_,
_empty string_ против _NULL_
Все тесты проходят успешно. Но никакие ценности не равны друг другу. Таким образом, assertEquals сравнивается с оператором «==» вместо «===» или чем-то в этом роде. Думаю, все должно быть так, как есть. Но почему?
У нас есть assertSame()
для сравнений ===
.
Хорошо, отлично. Имена немного ошибочны. Но это моя вина. Простите за это.
Но assertSame()
будет сравнивать только true
, если объекты одинаковы.
class Foo {}
$this->assertSame(new Foo(), new Foo());
Failed asserting that two variables reference the same object.
Мне нужен код, который может работать так:
$this->assertSame(new Foo(null), new Foo("")); // false
$this->assertSame(new Foo(null), new Foo(null)); // true
$this->assertSame(new Foo(""), new Foo("")); // true
Самый полезный комментарий
У нас есть
assertSame()
для сравнений===
.