Laravel 8 测试 JSON APIs
Laravel 也提供了几个辅助函数来测试 JSON APIs 和其响应。例如,json
,getJson
,postJson
,putJson
,patchJson
,deleteJson
,以及 optionsJson
可以被用于发送各种 HTTP 动作。你也可以轻松地将数据和请求头传递到这些方法中。首先,让我们实现一个测试示例,
发送 POST
请求到 /user
,并断言返回的期望数据:
<?php
class ExampleTest extends TestCase
{
/**
* 一个基本的功能测试示例
*
* @return void
*/
public function testBasicExample()
{
$response = $this->postJson('/user', ['name' => 'Sally']);
$response
->assertStatus(201)
->assertJson([
'created' => true,
]);
}
}
技巧:
assertJson
将响应转换为一个数组,并利用PHPUnit::assertArraySubset
来验证给定的数组存在于应用返回的 JSON 响应中。因此,如果 JSON 响应中有其他属性,测试仍旧会在给定数组存在的情况下通过。
此外,JSON 响应数据可以作为数组变量在响应上访问:
$this->assertTrue($response['created']);