代码之家  ›  专栏  ›  技术社区  ›  Stephan Kulla

Pacts:如何匹配求和/并集类型?

  •  0
  • Stephan Kulla  · 技术社区  · 4 年前

    我有一个api端点,它将返回一个sum类型的数组。我如何在pacts(javascript版本,消费者网站)中为它编写适当的匹配器?

    示例:假设我们有端点 /api/events 它返回一个字典列表,每个字典代表一个事件。假设我们有两种不同类型的事件(在实践中可能有几种):

    interface ContentAddedEvent {
      type: "ContentAdded"
      newContent: string
    }
    
    interface UserRegisteredEvent {
      type: "Userregistered"
      username: string
    }
    
    type Event = ContentAddedEvent | UserRegisteredEvent
    

    /api/事件 返回以下类型的数组 Event[] 。如何为它编写匹配器?我没有找到一个好的例子 https://docs.pact.io/implementation_guides/javascript/readme#matching 我如何将其存档。。。

    0 回复  |  直到 4 年前
        1
  •  1
  •   Matthew Fellows    4 年前

    你需要哪种语言?它被标记为pact jvm,但看起来是一个与JS相关的问题?

    在大多数当前实现中,您需要为这两个场景中的每一个编写一个测试(即 ContentAddedEvent 另一个为 UserRegisteredEvent )

    请参阅 https://docs.pact.io/faq/#why-is-there-no-support-for-specifying-optional-attributes 对于可选类型的挑战,这在这里是相关的(TL;DR-如果你说你可以支持两种类型,但只测试一种变体,你不能保证合约得到支持,所以Pact的立场是你必须明确检查联合中的所有变体)。

    我们有一个新的匹配器,可以检查是否存在 每个至少一个 类型调用 arrayContaining 。参见 https://github.com/pact-foundation/pact-js/tree/feat/v3.0.0#array-contains-matcher 了解如何使用此匹配器。它应该在JS和JVM之间互操作,但该分支目前位于 beta .