Вот что говорит phpunit:
1) Asgard\Entity\Tests\EntityTest::testToArray Failed asserting that two arrays are equal. --- Expected +++ Actual @@ @@ Array ( 'id' => null 'title' => 'Test Title' 'content' => 'Test Content' 'published' => 2015-03-04T11:19:50+0000 'comments' => Array ( 0 => Array ( 'id' => null 'content' => 'foo' 'published' => 2015-03-04T11:19:50+0000 'another_property' => null 'news' => null ) 1 => Array ( 'id' => null 'content' => 'bar' 'published' => 2015-03-04T11:19:50+0000 'another_property' => null 'news' => null ) 2 => Array ( 'id' => null 'content' => 'baz' 'published' => 2015-03-04T11:19:50+0000 'another_property' => null 'news' => null ) ) 'another_property' => null )
https://travis-ci.org/asgardphp/asgard/jobs/53029084
Между «ожидаемым» и «фактическим» нет разницы. Обычно тесты проходят, но иногда это терпит неудачу.
Нашел вопрос. Элементы были не в том же порядке. Немного раздражает, хотя выход не показывает его.
Я заменил assertEquals:
$this->assertTrue($this->similar_arrays($arr1, $arr2)); protected function similar_arrays($a, $b) { if(is_array($a) && is_array($b)) { if(count(array_diff(array_keys($a), array_keys($b))) > 0) return false; foreach($a as $k => $v) { if(!$this->similar_arrays($v, $b[$k])) return false; } return true; } else return $a === $b; }
Поскольку вы используете DateTime в своих тестах – вы уверены, что не получаете тест, который начинается через одну секунду, а заканчивается в другом, так что есть вторая разница в метках времени, в зависимости от того, на каком этапе вы их смотрите? – Использование динамических дат и времени в тестах – довольно распространенная причина случайных неудачных тестов.
Проверьте, есть ли у вас EOL в ваших значениях.
Если у вас есть такое значение:
'x' => 'line1
line2'
измените его на
'x' => "line1\nline2"
Примечание: это может не отвечать на прямой вопрос, который имел OP, но это то, что сработало для меня.