>

사용자 정의 JsonType 를 정의 할 수 있는지 궁금합니다   seeResponseMatchesJsonType 를 통한 API 응답 검증  방법. 내 말은, 구조에 대한 응답이 있다고 가정 해 봅시다 :

[
   'id' => 'integer',
   'name' => 'string',
   'address' => [
      'street' => 'string',
      'city' => 'string'
   ]
]

분명히이 구조는 복잡한 유형 address 를 가지고 있습니다.  임베디드 및 전체 앱에서 이러한 유형은 여러 번 사용될 수 있으므로 간단히 작성하고 싶습니다.

$I->seeResponseMatchesJsonType([
   'id' => 'integer',
   'name' => 'string',
   'address' => 'addressType'
]);

이 임베디드 구조를 항상 다시 쓰지 않고. Codeception에서 어떻게 달성 할 수 있습니까?


  • 답변 # 1

    예, \ Codeception \ Util \ JsonType 클래스의 addCustomFilter 메소드를 사용하여이를 수행 할 수 있습니다.

    /**
         * Adds custom filter to JsonType list.
         * You should specify a name and parameters of a filter.
         *
         * Example:
         *
         * ```php
         * <?php
         * JsonType::addCustomFilter('email', function($value) {
         *     return strpos('@', $value) !== false;
         * });
         * // => use it as 'string:email'
         *
         * // 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)'
         * ?>
         * ```
         *
         * @param $name
         * @param callable $callable
         */
        public static function addCustomFilter($name, callable $callable)
        {
            static::$customFilters[$name] = $callable;
        }
    
    

  • 이전 파이썬 코드로 QR 코드 스캔이 잘못되었습니다
  • 다음 r - 연간 볼륨에 대한 막대 그래프는 일년 내내 표시되지 않습니다