WireMock Standalone响应模板:同JSON键引用与数值运算实现
WireMock Standalone 响应模板数值计算解决方案
核心问题解决思路
WireMock的响应模板基于Handlebars,并提供专属内置助手函数,无法直接使用JavaScript的parseInt/parseFloat,也不能直接引用模板中已定义的JSON键值,需按以下方式处理:
方案1:直接在乘法运算中提取并转换数值
使用WireMock内置的number助手将字符串转为数值,结合multiply助手完成乘法,同时直接通过jsonPath从请求体中提取字段(无需引用模板内的JSON键):
{ "price": {{jsonPath request.body '$.price'}}, "quantity": {{jsonPath request.body '$.quantity'}}, "amt": {{multiply (number (jsonPath request.body '$.price')) (number (jsonPath request.body '$.quantity'))}} }
关键说明:
number助手:自动将字符串格式的数字转换为数值类型(支持整数、浮点数),替代JavaScript的parseInt/parseFloatjsonPath request.body '$.price':直接从请求体中提取对应字段,模板中无法引用已定义的price键(因为JSON结构是渲染结果,并非模板上下文变量)
方案2:用变量复用提取的数值(更易维护)
通过Handlebars的assign助手将转换后的数值存为模板变量,后续直接引用变量完成计算,避免重复写jsonPath:
{{#assign 'priceVal'}}{{number (jsonPath request.body '$.price')}}{{/assign}} {{#assign 'quantityVal'}}{{number (jsonPath request.body '$.quantity')}}{{/assign}} { "price": {{priceVal}}, "quantity": {{quantityVal}}, "amt": {{multiply priceVal quantityVal}} }
必要前提
启动WireMock Standalone时必须启用响应模板功能,添加参数:
wiremock --global-response-templating
内容的提问来源于stack exchange,提问作者Mahesh Kumaran
相关产品推荐
相关产品推荐

