You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WireMock JSON Stub配置中hasExactly关键字的工作机制疑问

WireMock中hasExactly关键字的工作逻辑解析

你的核心误解是把hasExactly当成了「匹配器按顺序对应请求头的每个值」,但它的实际逻辑完全不同:

真实工作逻辑

hasExactly的匹配规则分为两点:

  • 数量一致:请求头必须恰好包含N个值,N等于hasExactly数组里匹配器的总数
  • 匹配器全覆盖:数组中的每一个匹配器,都能被请求头里的至少一个值满足(不要求对应特定位置的取值)

你的请求为什么匹配成功

结合你的配置和发送的请求(3个X-Request-ID值:Demo1、Demo2、Demo3):

  • equalTo: "Demo1":被请求头里的Demo1满足
  • contains: "Demo2":被请求头里的Demo2满足
  • doesNotContain: "Demo3":被请求头里的Demo1、Demo2满足(这两个值都不包含Demo3)

三个匹配器都找到了对应的满足值,同时请求头取值数量和匹配器数量一致,因此Stub判定匹配成功,返回200。

你之前误以为第三个匹配器是校验第三个请求头的值,但hasExactly不关心值的顺序,只看值的数量和每个匹配器是否有对应的满足项。

实现顺序匹配的思路

如果需要让请求头的多个值按顺序分别匹配对应条件,WireMock原生的hasExactly无法实现,你可以:

  • 把多个值拼接成单个请求头值,用正则匹配器按顺序校验
  • 编写自定义匹配器实现顺序校验逻辑

内容的提问来源于stack exchange,提问作者AMOD MAHAJAN

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 11:03:09