JSON assertions for PHPUnit includes traits/methods to help validate your JSON data through various methods.
- Validate your JSON data via JSON Schema
- describes your existing data format
- clear, human- and machine-readable documentation
- complete structural validation, useful for
- automated testing
- validating client-submitted data
- See more details here
- Access JSON data through expressions (e.g.
foo.bar[3]
)- See more details here
$ composer require estahn/phpunit-json-assertions --dev
or in your composer.json
:
{
"require-dev": {
"estahn/phpunit-json-assertions": "@stable"
}
}
Assert | Description |
---|---|
assertJsonMatchesSchema | Asserts that json content is valid according to the provided schema file |
assertJsonMatchesSchemaString | Asserts that json content is valid according to the provided schema string |
assertJsonValueEquals | Asserts if the value retrieved with the expression equals the expected value |
You can either use the trait
or class
version.
<?php
namespace EnricoStahn\JsonAssert\Tests;
use EnricoStahn\JsonAssert\Assert as JsonAssert;
class MyTestCase extends \PHPUnit_Framework_TestCase
{
use JsonAssert;
public function testJsonDocumentIsValid()
{
// my-schema.json
//
// {
// "type" : "object",
// "properties" : {
// "foo" : {
// "type" : "integer"
// }
// },
// "required" : [ "foo" ]
// }
$json = json_decode('{"foo":1}');
$this->assertJsonMatchesSchemaString('./my-schema.json', $json);
$this->assertJsonValueEquals(1, '* | [0]', $json);
}
}
In case you don't want to use the trait
you can use the provided class wich extends from \PHPUnit_Framework_TestCase
.
You can either extend your test case or use the static methods like below.
<?php
namespace EnricoStahn\JsonAssert\Tests;
use EnricoStahn\JsonAssert\AssertClass as JsonAssert;
class MyTestCase extends \PHPUnit_Framework_TestCase
{
public function testJsonDocumentIsValid()
{
// my-schema.json
//
// {
// "type" : "object",
// "properties" : {
// "foo" : {
// "type" : "integer"
// }
// },
// "required" : [ "foo" ]
// }
$json = json_decode('{"foo":1}');
JsonAssert::assertJsonMatchesSchemaString('./my-schema.json', $json);
JsonAssert::assertJsonValueEquals(1, '* | [0]', $json);
}
}
To run the test suite, you need composer.
$ composer install
$ bin/phpunit
The phpunit-json-assertions library is licensed under the MIT.