Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commite4e14e1

Browse files
committed
docs(json-path): add testing part doc for the component
Updates the documentation to document `JsonPathAssertionsTrait` and related constraints (closessymfony#20977). Complete the previous work done insymfony#21078.
1 parent870b265 commite4e14e1

File tree

1 file changed

+72
-0
lines changed

1 file changed

+72
-0
lines changed

‎components/json_path.rst

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -213,6 +213,78 @@ filters, please refer to the `Querying with Expressions`_ section above. All the
213213
features are supported and can be combined with the programmatic builder where
214214
appropriate (e.g., inside a ``filter()`` expression).
215215

216+
Testing with JSON Assertions
217+
----------------------------
218+
219+
The component provides a set of PHPUnit assertions to make testing JSON data more convenient. To use them, include the
220+
:trait:`Symfony\\Component\\JsonPath\\Test\\JsonPathAssertionsTrait` in your test class::
221+
222+
use PHPUnit\Framework\TestCase;
223+
use Symfony\Component\JsonPath\Test\JsonPathAssertionsTrait;
224+
225+
class MyTest extends TestCase
226+
{
227+
use JsonPathAssertionsTrait;
228+
229+
public function testSomething(): void
230+
{
231+
$json = '{"books": [{"title": "A"}, {"title": "B"}]}';
232+
233+
self::assertJsonPathCount(2, '$.books[*]', $json);
234+
}
235+
}
236+
237+
The trait provides the following assertion methods:
238+
239+
*:method:`Symfony\\Component\\JsonPath\\Test\\JsonPathAssertionsTrait::assertJsonPathCount`
240+
Asserts that the number of elements found by the JSONPath expression matches an expected count::
241+
242+
$json = '{"a": [1, 2, 3]}';
243+
self::assertJsonPathCount(3, '$.a[*]', $json);
244+
245+
*:method:`Symfony\\Component\\JsonPath\\Test\\JsonPathAssertionsTrait::assertJsonPathEquals`
246+
Asserts that the result of a JSONPath expression is equal (``==``) to an expected value. This assertion uses type coercion::
247+
248+
$json = '{"a": [1, 2, 3]}';
249+
250+
// passes because "1" == 1
251+
self::assertJsonPathEquals(['1'], '$.a[0]', $json);
252+
253+
*:method:`Symfony\\Component\\JsonPath\\Test\\JsonPathAssertionsTrait::assertJsonPathNotEquals`
254+
Asserts that the result of a JSONPath expression is not equal (``!=``) to an expected value::
255+
256+
$json = '{"a": [1, 2, 3]}';
257+
self::assertJsonPathNotEquals([42], '$.a[0]', $json);
258+
259+
*:method:`Symfony\\Component\\JsonPath\\Test\\JsonPathAssertionsTrait::assertJsonPathSame`
260+
Asserts that the result of a JSONPath expression is identical (``===``) to an expected value. This is a strict comparison and does not perform type coercion::
261+
262+
$json = '{"a": [1, 2, 3]}';
263+
264+
// fails because "1" !== 1
265+
// self::assertJsonPathSame(['1'], '$.a[0]', $json);
266+
267+
self::assertJsonPathSame([1], '$.a[0]', $json);
268+
269+
*:method:`Symfony\\Component\\JsonPath\\Test\\JsonPathAssertionsTrait::assertJsonPathNotSame`
270+
Asserts that the result of a JSONPath expression is not identical (``!==``) to an expected value::
271+
272+
$json = '{"a": [1, 2, 3]}';
273+
self::assertJsonPathNotSame(['1'], '$.a[0]', $json);
274+
275+
*:method:`Symfony\\Component\\JsonPath\\Test\\JsonPathAssertionsTrait::assertJsonPathContains`
276+
Asserts that a given value is found within the array of results from the JSONPath expression::
277+
278+
$json = '{"tags": ["php", "symfony", "json"]}';
279+
self::assertJsonPathContains('symfony', '$.tags[*]', $json);
280+
281+
*:method:`Symfony\\Component\\JsonPath\\Test\\JsonPathAssertionsTrait::assertJsonPathNotContains`
282+
Asserts that a given value is NOT found within the array of results from the JSONPath expression::
283+
284+
$json = '{"tags": ["php", "symfony", "json"]}';
285+
self::assertJsonPathNotContains('java', '$.tags[*]', $json);
286+
287+
216288
Error Handling
217289
--------------
218290

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp