Laravel provides many useful helpers for testing your application and it has great support for testing HTTP testing through its fluent API.
A feature added to v5.4.10 is a new assertJsonFragment method that allows you to look for a specific fragment instead of the whole JSON response.
Laravel JSON response
Here is a quick example of a Laravel JSON response to show how this can work. Let’s say your app has a way to fetch information on a specific user:
Route::get('/api/users', function() {
return App\User::all();
});
This returns the JSON for all the users:
// /api/user/
[
{"id":1,"name":"Bill Murray","email":"bill.murray@example.org","created_at":"2017-02-14 01:53:04","updated_at":"2017-02-14 01:53:04"},
{"id":2,"name":"John Doe","email":"john.doe@example.org","created_at":"2017-02-14 02:23:14","updated_at":"2017-02-14 02:23:14"}
]
Utilizing Laravel’s assertJsonFragment
Now with the new assertJsonFragment you can test it like this:
/** @test */
function test_json_response()
{
$response = $this->json('GET', '/api/user/1');
$response
->assertStatus(200)
->assertJsonFragment([
'name' => 'Bill Murray',
]);
}
This is just another small tool available in your arsenal to make testing easier. Check out the documentation for other methods of testing JSON responses.