Моя цель - обеспечить, чтобы граф объекта ожидал значений и типов. Я хочу, чтобы каждое значение имело ожидаемый тип.PHPUnit assertEquals строгий контроль типа
С этой целью assertEquals()
, к сожалению, не полезно:
$this->assertEquals(
[ 'prop' => '0' ],
[ 'prop' => 0 ]
);
// -> no failures
В этом случае assertSame()
работает хорошо:
$this->assertSame(
[ 'prop' => '0' ],
[ 'prop' => 0 ]
);
// Failed asserting that Array &0 (
// 'prop' => 0
//) is identical to Array &0 (
// 'prop' => '0'
//).
Проблема с assertSame()
является то, что он также проверяет ссылки на объекты:
$this->assertSame(
(object) [ 'prop' => 0 ],
(object) [ 'prop' => 0 ]
);
// Failed asserting that two variables reference the same object.
Какие варианты я могу иметь?
На отдельной ноте, я не знаю, почему это был разработан таким образом, - мне кажется, что assertSame()
делает две вещи сразу (я уже не более проверить класс объекта, а не ссылки) ,
Это легко, если это проверка на одно свойство, но не столько для всего графа объектов. – Christian
привет, христианин, конечно. Но таким образом вы можете напрямую указать на проблему (тип вместо значения поля), а не на большой граф объектов, которые отличаются друг от друга. – Matteo