我一直在实施JsonExporter
,并且自JSON_PRETTY_PRINT
添加后,测试用例无法再修复。 phpunit
仍然认为输出存在差异,但实际上并非如此:
// code of the testcase
$exporter->export($outFile, array(
'key.a' => 'aaa',
'key.b' => 'bbb',
'key.c' => 'ccc',
));
$expectedContent = <<<EOL
{
"key.a": "aaa",
"key.b": "bbb",
"key.c": "ccc"
}
EOL;
$this->assertEquals($expectedContent, file_get_contents($outFile));
一直在使用多个分隔符进行测试,<<<C
和PHP_EOL
也无法修复测试用例。测试用例总是失败,但输出没有区别:
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
'{
"key.a": "aaa",
"key.b": "bbb",
"key.c": "ccc"
}'
我们如何让这个测试用例通过?
修改:Exporter
只做一个简单的json_encode
:
/**
* {@inheritdoc}
*/
public function export($file, $translations)
{
$bytes = file_put_contents($file, json_encode($translations, JSON_PRETTY_PRINT));
return ($bytes !== false);
}
答案 0 :(得分:1)
PHPUnit实现了一些将比较JSON数据的断言:
这些将比较数据结构,而不是JSON字符串格式。