Laravel的TestCase方法seeJson()只查找数组

sch*_*rht 17 php json unit-testing laravel-5.1

我正在使用Laravel 5.1 Testsuite.

现在,我用方法seeJson()测试我的json api.这个方法需要一个数组,例如:

->seeJson(['created' => 1]);
Run Code Online (Sandbox Code Playgroud)

但是我的json api总是返回一个json对象带有json对象数组,在这种情况下:

Response::json(['created' => 1], 200);
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,我的json api返回:

{created: 1}
Run Code Online (Sandbox Code Playgroud)

但是seeJson()正好查找给定的数组:

[created: 1]
Run Code Online (Sandbox Code Playgroud)

我从来没有让我的测试通过匹配.我怎么配?

小智 3

我收到了类似的错误。

无法在 [{"created":"1"}......] 中找到 JSON 片段 ["created":1]

查看源码,该错误是这样写的:

"Unable to find JSON fragment [{$expected}] within [{$actual}]."
Run Code Online (Sandbox Code Playgroud)

所以[ ]没有被包含在搜索中

Response::json(['created' => 1], 200);
Run Code Online (Sandbox Code Playgroud)

结果是: {"created":1}

当我转储seeJson()方法内的响应内容时,所有值都用引号引起来。尝试将您的测试更改为:

->seeJson(['created' => '1']);
Run Code Online (Sandbox Code Playgroud)