Testing keys of a JSON API response
Published on 2022-06-28 • Modified on 2022-06-28
In this snippet, we see how to test the presence of keys in a JSON API response. We can use the PHPUnit assertEqualsCanonicalizing()
assertion. As you can see, the order of the keys doesn't matter as the array is normalized before the comparison is made.
/**
* @see ApiController::stats()
*/
public function testStats(): void
{
$stats = $this->repo->getArticlesCount();
$client = self::createClient();
$client->request('GET', '/stats');
self::assertResponseIsSuccessful();
self::assertResponseHeaderSame('content-type', 'application/json');
self::assertEqualsCanonicalizing(['posts', 'snippets'], array_keys($stats));
self::assertEqualsCanonicalizing(['snippets', 'posts'], array_keys($stats));
self::assertJsonContains([
'posts' => $stats['posts'],
'snippets' => $stats['snippets'],
]);
}