dqlm80253 2015-09-15 15:23
浏览 40

类似的内容在测试用例中没有像处理类似

I've been implementing a JsonExporter and since JSON_PRETTY_PRINT was added the testcase cannot be fixed anymore. phpunit still thinks there is a difference in the output, but it actually isn't:

// 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));

Have been testing with multiple delimiters, <<<C and PHP_EOL also don't fix the testcase. The testcase always fails but there is no difference in the output:

Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
 '{
     "key.a": "aaa",
     "key.b": "bbb",
     "key.c": "ccc"
 }'

How can we make this testcase pass?

Edit: the Exporter only does a simple json_encode:

/**
 * {@inheritdoc}
 */
public function export($file, $translations)
{
    $bytes = file_put_contents($file, json_encode($translations, JSON_PRETTY_PRINT));

    return ($bytes !== false);
}
  • 写回答

1条回答 默认 最新

  • dongying2112 2015-09-15 17:10
    关注

    PHPUnit implements some assertions that will compare JSON data:

    These will compare the data structure, not the JSON string format.

    评论

报告相同问题?

悬赏问题

  • ¥15 win11 23H2删除推荐的项目,支持注册表等
  • ¥15 matlab 用yalmip搭建模型,cplex求解,线性化处理的方法
  • ¥15 qt6.6.3 基于百度云的语音识别 不会改
  • ¥15 关于#目标检测#的问题:大概就是类似后台自动检测某下架商品的库存,在他监测到该商品上架并且可以购买的瞬间点击立即购买下单
  • ¥15 神经网络怎么把隐含层变量融合到损失函数中?
  • ¥15 lingo18勾选global solver求解使用的算法
  • ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行
  • ¥20 测距传感器数据手册i2c
  • ¥15 RPA正常跑,cmd输入cookies跑不出来
  • ¥15 求帮我调试一下freefem代码