【发布时间】:2019-11-22 08:11:43
【问题描述】:
我的一些 PHPUnit 测试将 Facebook 称为“php-business-sdk”,因此我可以确信 Facebook 的 API 会继续按我的预期运行。例如。 getInsights() 在FacebookAds\Object\Ad 内。
而那些 PHPUnit 测试一直在使用 assertEqualsCanonicalizing。
但是,测试仍然很脆弱; Facebook 的 API 经常改变 不仅结果中 顶级 数组(关联数组的数组)的顺序,而且还改变内部键的顺序关联数组。
所以我真正需要的是assertEqualsCanonicalizing 的一个版本,它是递归的,并且对顶级数组中关联数组的键的排序也是不可知的。
如果这样的函数已经存在(可能在 PHP、PHPUnit、Laravel 或其他地方),我宁愿不编写自己的代码。是吗?
附:下面是一个简化的结果示例:
[
{
"Spend": "$3,009",
"Campaign ID": 3335626793661,
"Reach": 37640,
"Unique Inline Link Clicks": 2368
},
{
"Spend": "$1,030",
"Campaign ID": 3335626793662,
"Reach": 1620,
"Unique Inline Link Clicks": 231
}
]
(想象下一次 API 返回相同的数据,但“Reach”在“Spend”之前写入,对象的顺序也可以改变。)
附注这不是链接问题的重复,因为我专门询问如何不知道 inner 数组键的排序顺序。
【问题讨论】:
-
@MohammedYassineCHABLI 我更新了我的问题以显示它不是重复的,我还提供了一个答案。我现在如何删除有关它可能重复的警告?或者你能改变你的投票吗?
标签: php laravel phpunit facebook-php-sdk