我使用的是Laravel 5.1 Testsuite。
现在,我用方法seeJson()测试我的json api。此方法需要一个数组,例如:
->seeJson(['created' => 1]);
但我的json api总是返回一个 json对象或带有json对象的数组,在这种情况下:
Response::json(['created' => 1], 200);
在上面的例子中,我的json api返回:
{created: 1}
但是seeJson()正好查找给定的数组:
[created: 1]
我从来没有通过匹配传递我的测试。我该怎么匹配?
答案 0 :(得分:3)
我收到了类似的错误。
无法在[{“created”:“1”}中找到JSON片段[“created”:1] ......]
查看源代码,该错误写为:
"Unable to find JSON fragment [{$expected}] within [{$actual}]."
因此[
]
未包含在搜索
Response::json(['created' => 1], 200);
导致:
{"created":1}
当我在seeJson()
方法中转储响应内容时,所有值都在引号中。尝试将测试更改为:
->seeJson(['created' => '1']);
答案 1 :(得分:3)
seeJson
进行严格的比较,所以:
'created' => 1 (Interpreted as integer)
将失败,因为您的API返回的JSON实际上是
"created":"1" (interpreted as string)
答案 2 :(得分:-3)
请使用这样的json。
->seeJson((object)['created' => 1]);