phpunit json assertions
v4.0.0
PHPUnit용 JSON 어설션에는 다양한 방법을 통해 JSON 데이터의 유효성을 검사하는 데 도움이 되는 특성/방법이 포함되어 있습니다.
foo.bar[3]
)을 통해 JSON 데이터에 액세스합니다. $ composer require estahn/phpunit-json-assertions --dev
또는 composer.json
에서:
{
"require-dev" : {
"estahn/phpunit-json-assertions" : " @stable "
}
}
주장하다 | 설명 | 사용 가능 |
---|---|---|
AssertJsonMatches스키마 | 제공된 스키마 파일에 따라 json 콘텐츠가 유효한지 확인합니다. | 모두 |
AssertJsonMatchesSchemaString | 제공된 스키마 문자열에 따라 json 콘텐츠가 유효한지 확인합니다. | 모두 |
주장JsonValueEquals | 표현식으로 검색된 값이 예상 값과 같은지 확인합니다. | 모두 |
주장JsonValueEquals | 표현식으로 검색된 값이 예상 값과 같은지 확인합니다. | 모두 |
주장JsonResponse | 응답이 성공했으며 json 유형인지 확인합니다. | 심포니 |
trait
또는 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 );
}
}
trait
을 사용하고 싶지 않은 경우 PHPUnit_Framework_TestCase
에서 확장된 제공된 클래스를 사용할 수 있습니다. 테스트 케이스를 확장하거나 아래와 같은 정적 메서드를 사용할 수 있습니다.
<?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 );
}
}
justinrainbow/json-schema
의 스키마 저장소를 사용하면 실제 스키마 위치를 효과적으로 재정의하는 스키마를 등록할 수 있습니다.
예:
{ "$ref" : " https://iglu.foobar.com/myschema.json#/definitions/positiveInteger " }
해석기는 이 끝점에서 스키마를 가져와 JSON 문서와 일치시킵니다. 스키마 저장소를 사용하면 이 동작을 재정의할 수 있습니다.
$ schemastorage -> addSchema ( ' https://iglu.foobar.com/myschema.json ' , ( object )[ ' type ' => ' string ' ]);
이를 통해 해석기는 다시 다운로드하지 않고도 이미 존재하는 스키마를 가져옵니다.
<?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
다양한 사용 사례에서 더 간단한 처리를 위한 확장 기능을 제공합니다.
EnricoStahnJsonAssertExtensionSymfony
확장은 Symfony 프레임워크에서 생성된 실제 응답 개체를 전달하고 디코딩 부분을 처리하는 것을 허용합니다.
전에:
use EnricoStahn JsonAssert Assert as JsonAssert ;
// ...
$ content = $ response -> getContent ();
$ json = json_decode ( $ content );
JsonAssert:: assertJsonMatchesSchemaString ( ' ./my-schema.json ' , $ json );
후에:
use EnricoStahn JsonAssert Extension Symfony as JsonAssert ;
// ...
JsonAssert:: assertJsonMatchesSchemaString ( ' ./my-schema.json ' , $ response );
테스트 스위트를 실행하려면 작곡가가 필요합니다.
$ composer install
$ bin/phpunit
phpunit-json-assertions 라이브러리는 MIT에 따라 라이센스가 부여되었습니다.