Wiremock中二级优先级请求何时触发?触发失败问题咨询
Wiremock二级优先级请求触发问题解决方法
明确优先级核心逻辑:Wiremock中优先级数值越小,优先级越高。如果一个请求同时匹配多个stub,会优先触发优先级数值更小的那个。你现在触发不了二级,大概率是目标请求同时符合一级stub的匹配规则,导致被一级拦截。
让二级请求避开一级的匹配范围:
检查一级stub的匹配条件,比如是否用了宽泛的通配符(如urlPattern: "/api/.*")覆盖了二级请求的路径。需要收紧一级的规则,比如把通配符改成精确路径:
原一级stub(覆盖所有/api开头请求):{ "request": { "urlPattern": "/api/.*" }, "response": { "status": 200 }, "priority": 1 }修改后一级stub(仅匹配特定路径):
{ "request": { "url": "/api/common" }, "response": { "status": 200 }, "priority": 1 }这样二级请求(如
/api/special)就不会被一级规则匹配到,自然会触发二级stub。验证二级stub的匹配条件是否完全命中:
确认二级stub的所有匹配规则(请求方法、header、query参数、body内容等)和实际请求完全一致。比如二级要求POST方法且带X-User-Type: "secondary"header,但实际请求是GET或没带该header,就会匹配失败,转而触发一级stub。按需调整优先级(如果需要二级优先于特定请求):
如果某些请求需要同时匹配一级和二级规则,但你希望触发二级,可以把二级的优先级数值设得比一级更小(比如一级设为2,二级设为1)。比如:
二级stub(优先匹配带特定参数的请求):{ "request": { "url": "/api/data", "queryParameters": { "level": { "equalTo": "2" } } }, "response": { "body": "Secondary Response" }, "priority": 1 }一级stub(匹配其他
/api/data请求):{ "request": { "url": "/api/data" }, "response": { "body": "Primary Response" }, "priority": 2 }此时请求
/api/data?level=2会触发二级,其他/api/data请求触发一级。
内容的提问来源于stack exchange,提问作者user2415183
相关产品推荐
相关产品推荐

