에 날짜 시간 특성을 가진 개체 비교 : 단위 테스트에서내가이 다음과 같은 구조의 객체가 있다고 가정 phpunit을
class Item {
public $id;
public $date;
}
을, 나는 두 항목의 평등을 테스트하고 싶습니다. 예컨대 :
class MyTests extends PHPUnit\Framework\TestCase
{
public function testDummy() {
$item1 = new Item();
$item1->id = 1000;
$item1->date = new DateTimeImmutable('now');
$item2 = new Item();
$item2->id = 1000;
$item2->date = $item1->date->modify('+1 second');
// For my use case, I'd consider these two items equal.
$this::assertEquals($item1, $item2); // FAILURE :(
}
이러한 개체를 비교하고 DateTime
개체를 발견 phpunit을 경우에 델타를 사용하여 깨끗한/간단한 방법이 있나요?
나는 $this::assertEquals($item1->date, $item2->date, '', 10)
을 사용할 수 있지만 내 객체에 대해서는 각 속성에 대한 어설 션을 작성하지 않을 것이라고 알고 있습니다.
감사합니다.
두 인스턴스는 어떻게 같습니까? 'date' 속성은 1 초 간격으로 있습니다. 귀하의 유스 케이스에 대해 "동등"한 것은 무엇입니까? – ishegg
왜 1 초를 추가하고 그것이 동일하다고 생각하니? DateTime에는 밀리 초가 있습니다. – DanFromGermany
예제로 사용하는 사례는 이해가되지 않습니다. 물론 두 객체의 내용이 동일하게 설정되면 동일합니다. 당신이 더 편안함을 원한다면, 나는'Reflection'을 들여다 볼 것입니다. – DanFromGermany