当前位置: 首页 > 知识库问答 >
问题:

pacts:需要非空映射(或非空字段)的匹配规则

刘意
2023-03-14
"validatedAnswers": [
    {
      "type": "typeA",
      "answers": {
        "favourite_colour": "Blue",
        "correspondence_address": {
            "line_1": "Main St",
            "postcode": "1A 2BC",
            "town": "London"
        }
      }
    },
    {
      "type": "typeB",
      "answers": {
        "first_name": "Firstname",
        "last_name": "Lastname",
      }
    }
  ]

但我们只对其中一些答案感兴趣。

注意:以上只是展示validatedAnswers结构的示例。每个答案映射都有几十个元素。

我们真正需要的是:https://github.com/pact-foundation/pact-specification/issues/38,但它是计划在V.4中使用的。与此同时,我们正在尝试一种不同的方法。我现在尝试做的是指定列表的每个元素都是一个非空映射。另一种方法是指定列表的每个元素都不为空。这些都可以使用Groovy DSL完成吗?

new PactBuilder().serviceConsumer('A').hasPactWith('B')
.port(findAvailablePort()).uponReceiving(...)
.willRespondWith(status: 200, headers: ['Content-Type': 'application/json'])
.withBody {
  validatedAnswers minLike(1) {
     type string()
     answers {
     }
  }
}

不起作用,因为它意味着answers应该是空的(“expected an empty Map but received Map([...])”,另请参见https://github.com/dius/pact-jvm/issues/298)。

所以我想做的是这样的事情:

.withBody {
    validatedAnswers minLike(1) {
         type string()
         answers Matchers.map()
    }
}

或:

validatedAnswers minLike(1) {
     type string()
     answers {
             keyLike 'title', notNull()
     }
}
validatedAnswers minLike(1) {
     type string()
     answers notNull()
}

共有1个答案

宦博超
2023-03-14

我将为此创建两个单独的测试,每个不同的响应形状都有一个测试,每个响应形状都有一个提供程序状态,例如Given there are type b Answers

这样,当您在提供程序端验证时,它将只发送这两个字段类型。

这两个例子的联合给出了一个允许这两种情况的契约。

 类似资料:
  • 我使用了Gson,但我需要转换器只序列化非空值或非空值。 例如: 现在,将该对象转换为json的Gson实例如下所示

  • 本文向大家介绍MySQL查询空字段或非空字段(is null和not null),包括了MySQL查询空字段或非空字段(is null和not null)的使用技巧和注意事项,需要的朋友参考一下 现在我们先来把test表中的一条记录的birth字段设置为空。 mysql> update test set t_birth=null where t_id=1; Query OK, 1 row affe

  • 问题内容: 我想计算一个特定字段集的多少字段在mysql中为空,我找到了一些示例,但它们都遍历整个表。 基本上我有8个领域 listing_photo_1到listing_photo_8,我想获取其中已填充的数量。 我试过了: 结果是: 为了澄清我期望的结果: listing_photo_1:已填满 listing_photo_2:已填满 listing_photo_3:已填满 listing_p

  • 问题内容: 我对Go之类的打字语言还是陌生的,并且正在尝试学习实现事物的最佳方法。 我有两个表示将插入到mongodb数据库中的模型的结构。一个结构(投资)具有另一个结构(组)作为其字段之一。 我遇到的问题是在投资模型中,不需要组。如果没有组,我认为最好不要将其插入数据库。在Go中处理这种数据库模型的最佳方法是什么? 问题答案: tl; dr :使用,如果您需要担心零值和null /未指定之间的差

  • 问题内容: 从目前的情况来看,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意测验或进一步的讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 在sql数据库列中,除非我们使用指定,否则将将空字段设置为。用一种代替另一种的优点是什么?谢谢! 问题答案: 如果需要在列中表示未知数据,请使其为可为空

  • 问题内容: 我有一个包含用户数据的类,如下所示: 我需要计算非字段,以显示用户已填充的配置文件的百分比。还有一些,我不希望在百分比计算要考虑几个字段:,和。 一种简单的方法是使用多个语句来获取非null字段,但这将涉及大量样板代码,并且还有一个我需要显示完成百分比的类。因此,我创建了一个实用程序函数,如下所示: 然后我按如下所示调用此函数: 我的问题是,这是我不算数字段还是可以进一步改进的最佳方法