Karate场景multipart fields仅添加部分字段引发500错误求助
Karate multipart fields 仅包含部分字段的问题解决
问题原因
你通过字符串模板(三重引号)定义formFields,尽管渲染后对象结构正确,但Karate 1.4.1的multipart fields处理逻辑对这种方式生成的非字符串类型字段(数值类型)存在解析遗漏,导致仅字符串类型的partFileName和fileName被添加到请求中。
解决方案
直接使用Karate原生JSON对象语法定义formFields,不需要字符串模板,变量直接引用即可,无需#(...)语法:
* def formFields = { partFileName: 'aa', partCount: 2, partNumber: 0, partSize: testFiles.aa.byteSize, fileSize: testFiles.ab.byteSize, fileName: 'ab' }
修正后的完整代码片段
* def formFields = { partFileName: 'aa', partCount: 2, partNumber: 0, partSize: testFiles.aa.byteSize, fileSize: testFiles.ab.byteSize, fileName: 'ab' } Given path 'uploads', uploadId And headers requiredHeaders * def readObject = ({ read: 'classpath:' + testFiles[formFields.partFileName].path, contentType: testFiles[formFields.partFileName].type }) And multipart fields formFields And multipart file file = readObject And method put Then match responseStatus == 200
说明
原生JSON对象定义的formFields会被multipart fields正确识别所有字段类型,数值类型的partCount、partNumber、partSize、fileSize都会被添加到multipart请求的表单字段中,解决服务端因缺少必填字段返回500错误的问题。
内容的提问来源于stack exchange,提问作者Jon Detert
相关产品推荐
相关产品推荐

