如何编写与键 'x' 类型 Y 或 Z 对象匹配的 Pact 合约

How to write Pact contract that matches to key 'x' either object of type Y or Z

我尝试编写涵盖以下场景的契约合同测试。我有一个消费者调用 GET 来接收有关动物(猫或狗)的信息。

response1:
{
   "animal" : {
      "type" : "Cat",
      "meow" : true
   }
}

response2:
{
   "animal" : {
      "type" : "Dog",
      "barks" : false
   }
}

在代码中,Cat 和 Dog 都是 Animal 的子类型 class。是否有可能编写一份合同,期望响应包含“动物”键,其值 匹配猫(期望属性“喵”和“类型”)或狗(期望属性“吠叫”和“类型”) .

也就是说。是否有可能 inn Pact 的 Dsl 声明在键“动物”下可以有定义 X 的对象或定义 Y 的对象?

不,您必须编写两个单独的测试来涵盖这种情况,以证明您的代码实际上可以处理这两种情况。想一想,如果您要编写一个以 Animal 作为参数的单元测试,但根据动物的不同表现不同 - 您需要使用所有变体对其进行测试。

该论点类似于我们不支持可选属性的原因(参见 https://docs.pact.io/faq/#why-is-there-no-support-for-specifying-optional-attributes)。