Den*_*ets 3 javascript parsing json yaml swagger
我正在尝试使用 got-swag (npm 包)测试 swagger api
当我尝试使用 json 模式验证 json 响应时,当单独的 yaml 文件合并为一个 yaml 和 json 文件时,我收到一个 parseError 。起源是 -validate() 行。validate() 源自 got-swag 包,但它在其底层jsonschema.validate( data, schema ); 中失败;依赖性
x-tests:
- description: Should return array of ferries
steps:
- get('/api/get/link/ferries')
- equal(res.statusCode, 200)
- ok(res.json.length > 0)
- validate(res.json, $ref: '#/definitions/ferry')
Run Code Online (Sandbox Code Playgroud)
这是产生的错误:
throw new exports.ParserError('while parsing a block mapping', this.marks.slice(-1)[0], "expected <block end>, but found " + token.id, token.start_mark);
^
while parsing a block mapping
on line 29, column 15
expected <block end>, but found <scalar>
on line 29, column 76
at ParserError.YAMLError [as constructor] (C:\Users\dvbets\Documents\Workspace\Repos\node_modules\yaml-js\lib\errors.js:70:46)
at ParserError.MarkedYAMLError [as constructor] (C:\Users\dvbets\Documents\Workspace\Repos\node_modules\yaml-js\lib\errors.js:90:45)
at new ParserError (C:\Users\dvbets\Documents\Workspace\Repos\node_modules\yaml-js\lib\parser.js:17:48)
at Loader.__dirname.Parser.Parser.parse_block_mapping_key (C:\Users\dvbets\Documents\Workspace\Repos\node_modules\yaml-js\lib\parser.js:433:15)
at Loader.__dirname.Parser.Parser.check_event (C:\Users\dvbets\Documents\Workspace\Repos\node_modules\yaml-js\lib\parser.js:61:48)
at Loader.__dirname.Composer.Composer.compose_mapping_node (C:\Users\dvbets\Documents\Workspace\Repos\node_modules\yaml-js\lib\composer.js:248:20)
at Loader.__dirname.Composer.Composer.compose_node (C:\Users\dvbets\Documents\Workspace\Repos\node_modules\yaml-js\lib\composer.js:160:21)
at Loader.__dirname.Composer.Composer.compose_sequence_node (C:\Users\dvbets\Documents\Workspace\Repos\node_modules\yaml-js\lib\composer.js:216:30)
at Loader.__dirname.Composer.Composer.compose_node (C:\Users\dvbets\Documents\Workspace\Repos\node_modules\yaml-js\lib\composer.js:158:21)
at Loader.__dirname.Composer.Composer.compose_mapping_node (C:\Users\dvbets\Documents\Workspace\Repos\node_modules\yaml-js\lib\composer.js:250:27)
Run Code Online (Sandbox Code Playgroud)
该行需要用引号引起来,以便转义内部:字符:
- "validate(res.json, $ref: '#/definitions/ferry')"
^
Run Code Online (Sandbox Code Playgroud)
:是 YAML 中的特殊字符,是对的分隔符key: value。如果不进行转义,该行将被解析为validate(res.json, $ref带有值的键名称'#/definitions/ferry'),并且解析器会)在结束引号后卡住。
相关:如何在 YAML 中转义指示符字符(即 : 或 - )
| 归档时间: |
|
| 查看次数: |
26460 次 |
| 最近记录: |