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 请求并解析路由参数