json - Wiremock:如何匹配不具有特定属性的 JSON 请求?

标签 json rest testing wiremock

我正在尝试模拟一个在 POST 中接受 JSON 正文的 API 调用,它有两种可能的响应:

  1. 如果 body 包含 SearchCenter 属性,用响应 A 回答
  2. 如果 body 不包含 SearchCenter,则回答 B

Request Matching Wiremock 文档的章节它只展示了如何积极匹配 JSON,它没有展示如何匹配缺失的属性。

使用 SearchCenter 的示例请求:

{
    "GeoCoordinatesResponseFormat": "DecimalDegree",
    "ProviderID": "bla bla",
    "SearchCenter": {
        "GeoCoordinates": {
            "DecimalDegree": {
                "Latitude": "{{search_lat}}",
                "Longitude": "{{search_lon}}"
            }
        },
        "Radius": {{search_radius}}
    }
}

没有 SearchCenter 的示例请求:

{
    "GeoCoordinatesResponseFormat": "DecimalDegree",
    "ProviderID": "bla bla"
}

最佳答案

为了匹配缺失的 JSON 属性,您可以将 matchingJsonPath 运算符与 absent() 结合使用,如下所示:

.withRequestBody(matchingJsonPath("$.SearchCenter", absent()))

关于json - Wiremock:如何匹配不具有特定属性的 JSON 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61750955/

相关文章:

android - 安息在 Android 4.0 上

java - 在 Java 中比较 2 个 XML 文档的最佳方法

iPhone 操作系统测试最佳实践

json - Ga特林 - 循环遍历 JSON 数组

jquery - 当响应为 json 时,Laravel 响应 id 会发生变化,但转储数据时 id 就在那里

用于大于、小于操作的 REST URL 设计

单个附加测试的 Maven 执行

javascript - 2 如何使用 UnderscoreJs 比较 2 个 JSON 的所有属性(除了一个属性)?

mysql - 如何在 Rails MySQL 应用程序中使用 json 列类型?

c# - RESTful 服务是否可以从客户端的 "Accept"属性设置其请求和响应类型