Testomatio - Test Management for Codeception
JsonType matches JSON structures against templates. You can specify the type of fields in JSON or add additional validation rules.
JsonType is used by REST module in seeResponseMatchesJsonType
and dontSeeResponseMatchesJsonType
methods.
Usage example:
<?php
$jsonType = new JsonType(['name' => 'davert', 'id' => 1, 'data' => []]);
$jsonType->matches([
'name' => 'string:!empty',
'id' => 'integer:>0|string:>0',
'data' => 'array:empty',
]); // => true
$jsonType->matches([
'id' => 'string',
]); // => `id: 1` is not of type string
Class JsonType @package Codeception\Util
public __construct($jsonArray)
param $jsonArray array |
JsonArray |
Creates instance of JsonType
Pass an array or \Codeception\Util\JsonArray
with data.
If non-associative array is passed - the very first element of it will be used for matching.
public static addCustomFilter($name, callable $callable)
param string
$nameparam callable
$callablereturn void
Adds custom filter to JsonType list.
You should specify a name and parameters of a filter.
Example:
<?php
JsonType::addCustomFilter('slug', function($value) {
return strpos(' ', $value) !== false;
});
// => use it as 'string:slug'
// add custom function to matcher with `len($val)` syntax
// parameter matching patterns should be valid regex and start with `/` char
JsonType::addCustomFilter('/len\((.*?)\)/', function($value, $len) {
return strlen($value) == $len;
});
// use it as 'string:len(5)'
public static cleanCustomFilters()
return void
Removes all custom filters
public matches(array $jsonType)
param array
$jsonTypereturn string|bool
Checks data against passed JsonType.
If matching fails function returns a string with a message describing failure.
On success returns true
.