以下是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
"预期"answers"实际"之间没有区别。测试通常会通过,但有时会失败。
发现问题。元素的顺序不同。虽然有点烦人,但输出没有显示出来。
我已将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
线路2'
将其更改为
'x' => "line1'nline2"
注意:这可能不能直接回答OP的问题,但这对我来说是有效的。