Laravel 测试用例方法 season() 只查找数组

Posted

技术标签:

【中文标题】Laravel 测试用例方法 season() 只查找数组【英文标题】:Laravel's TestCase method seeJson() only looks for array 【发布时间】:2015-11-23 10:16:38 【问题描述】:

我正在使用 Laravel 5.1 测试套件。

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

->seeJson(['created' => 1]);

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

Response::json(['created' => 1], 200);

在上述情况下,我的 json api 返回:

created: 1

但是 seeJson() 会准确地查找给定的数组:

[created: 1]

我从来没有让我的测试通过比赛。怎么匹配?​​

【问题讨论】:

【参考方案1】:

我收到了类似的错误。

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

查看源代码,那个错误写成:

"Unable to find JSON fragment [$expected] within [$actual]."

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

Response::json(['created' => 1], 200);

结果: "created":1

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

->seeJson(['created' => '1']);

【讨论】:

【参考方案2】:

seeJson 进行严格比较,所以:

'created' => 1 (Interpreted as integer)

会失败,因为您的 API 返回的 JSON 实际上是

"created":"1" (interpreted as string)

【讨论】:

以上是关于Laravel 测试用例方法 season() 只查找数组的主要内容,如果未能解决你的问题,请参考以下文章

在 Laravel 测试用例中模拟一个 http 请求并解析路由参数

Laravel Eloquent模型单元测试

Laravel Eloquent 模型单元测试

laravel的filter()方法的使用 (方法使用给定的回调函数过滤集合的内容,只留下那些通过给定真实测试的内容)

阿里大数据竞赛season1 总结

如何在 Xcode 中运行单个测试用例?