阅读(4075) (9)

Laravel 8 测试 JSON APIs

2021-07-08 09:45:50 更新

Laravel 也提供了几个辅助函数来测试 JSON APIs 和其响应。例如,jsongetJsonpostJsonputJsonpatchJsondeleteJson,以及 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']);