Pernyataan JSON untuk PHPUnit mencakup ciri/metode untuk membantu memvalidasi data JSON Anda melalui berbagai metode.
foo.bar[3]
) $ composer require estahn/phpunit-json-assertions --dev
atau di composer.json
Anda :
{
"require-dev" : {
"estahn/phpunit-json-assertions" : " @stable "
}
}
Menegaskan | Keterangan | Tersedia di |
---|---|---|
tegaskanJsonMatchesSchema | Menegaskan bahwa konten json valid sesuai dengan file skema yang disediakan | Semua |
tegaskanJsonMatchesSchemaString | Menegaskan bahwa konten json valid sesuai dengan string skema yang disediakan | Semua |
tegaskanJsonValueEquals | Menegaskan apakah nilai yang diambil dengan ekspresi sama dengan nilai yang diharapkan | Semua |
tegaskanJsonValueEquals | Menegaskan apakah nilai yang diambil dengan ekspresi sama dengan nilai yang diharapkan | Semua |
tegaskanJsonResponse | Menegaskan bahwa respons berhasil dan bertipe json | simfoni |
Anda dapat menggunakan versi trait
atau class
.
<?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 -> assertJsonMatchesSchema ( $ json , ' ./my-schema.json ' );
$ this -> assertJsonValueEquals ( 1 , ' * | [0] ' , $ json );
}
}
Jika Anda tidak ingin menggunakan trait
tersebut, Anda dapat menggunakan kelas yang disediakan yang diturunkan dari PHPUnit_Framework_TestCase
. Anda dapat memperluas kasus pengujian atau menggunakan metode statis seperti di bawah ini.
<?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:: assertJsonMatchesSchema ( $ json , ' ./my-schema.json ' );
JsonAssert:: assertJsonValueEquals ( 1 , ' * | [0] ' , $ json );
}
}
Penyimpanan skema justinrainbow/json-schema
memungkinkan untuk mendaftarkan skema yang secara efektif akan menggantikan lokasi skema sebenarnya.
Contoh:
{ "$ref" : " https://iglu.foobar.com/myschema.json#/definitions/positiveInteger " }
Resolver akan mengambil skema dari titik akhir ini dan mencocokkan dokumen JSON dengan skema tersebut. Dengan menggunakan penyimpanan skema, Anda dapat mengganti perilaku ini.
$ schemastorage -> addSchema ( ' https://iglu.foobar.com/myschema.json ' , ( object )[ ' type ' => ' string ' ]);
Dengan ini, penyelesai akan mengambil skema yang sudah ada tanpa mengunduhnya lagi.
<?php
namespace EnricoStahn JsonAssert Tests ;
use EnricoStahn JsonAssert AssertClass as JsonAssert ;
class MyTestCase extends PHPUnit_Framework_TestCase
{
public function setUp ()
{
self :: $ schemaStorage = new SchemaStorage ();
self :: $ schemaStorage -> addSchema ( ' <id> ' , obj);
. . .
}
public function testJsonDocumentIsValid ()
{
// my-schema.json
//
// {
// "type" : "object",
// "properties" : {
// "foo" : {
// "type" : "integer"
// }
// },
// "required" : [ "foo" ]
// }
$ json = json_decode ( ' {"foo":1} ' );
JsonAssert:: assertJsonMatchesSchema ( $ json , ' ./my-schema.json ' );
JsonAssert:: assertJsonValueEquals ( 1 , ' * | [0] ' , $ json );
}
}
phpunit-json-assertions
menyediakan ekstensi untuk penanganan yang lebih sederhana dalam berbagai kasus penggunaan.
Ekstensi EnricoStahnJsonAssertExtensionSymfony
memungkinkan untuk meneruskan objek respons aktual yang dihasilkan oleh kerangka kerja symfony dan menangani bagian decoding.
SEBELUM:
use EnricoStahn JsonAssert Assert as JsonAssert ;
// ...
$ content = $ response -> getContent ();
$ json = json_decode ( $ content );
JsonAssert:: assertJsonMatchesSchemaString ( ' ./my-schema.json ' , $ json );
SETELAH:
use EnricoStahn JsonAssert Extension Symfony as JsonAssert ;
// ...
JsonAssert:: assertJsonMatchesSchemaString ( ' ./my-schema.json ' , $ response );
Untuk menjalankan test suite, Anda memerlukan composer.
$ composer install
$ bin/phpunit
Pustaka phpunit-json-assertions dilisensikan di bawah MIT.