如何为Wiremock 2.33.2端点配置随机返回的status状态码?
解决Wiremock 2.33.2随机返回状态码的问题
直接在JSON映射中嵌入{{pickRandom}}模板语法会导致JSON格式无效,包裹成字符串后又会被Wiremock识别为非整数类型,无法直接生效。可以通过Wiremock的扩展转换器实现需求,以下是两种可行方案:
方案一:使用响应模板(Response Templating)
- 启动Wiremock时启用响应模板功能:
java -jar wiremock-jre8-2.33.2.jar --enable-response-templating
- 修改映射配置:
{ "mappings": [ { "request": { "method": "PATCH", "urlPattern": "/giglio/random/supplier-stock/.*", "headers": { "Content-Type": { "equalTo": "application/json" } } }, "response": { "status": "{{pickRandom 200 500}}", "transformers": ["response-template"] } } ] }
启用响应模板后,Wiremock会自动解析{{pickRandom}}表达式,将字符串转换为对应的整数状态码返回。
方案二:使用脚本转换器(Script Transformer)
无需全局启用响应模板,直接通过Groovy脚本动态修改响应状态码:
{ "mappings": [ { "request": { "method": "PATCH", "urlPattern": "/giglio/random/supplier-stock/.*", "headers": { "Content-Type": { "equalTo": "application/json" } } }, "response": { "status": 200, "transformers": ["script"], "transformerParameters": { "script": "response.status = new java.util.Random().nextBoolean() ? 200 : 500;" } } } ] }
脚本会随机将初始状态码200替换为200或500,若需要更多状态码选项,可修改脚本逻辑(比如用nextInt从数组中随机选取)。
内容的提问来源于stack exchange,提问作者Simone
相关产品推荐
相关产品推荐

