如何处理 Pact 上的多态端点?

How to handle Polymorphic endpoints on Pact?

我有一个可以搜索 BooksMovies 的应用程序。这 2 个实体具有不同的属性,因此它们的 JSON 结构不同。

我还有一个 GET /favorites 端点,它应该 return BooksMovies

GET /favorites

{
  "favorites": [
    {
      "type": "book",
      "title": "Foo",
      "author": "John"
    },
    { 
      "type": "movie",
      "name": "Bar",
      "producers": [
        {
          "firstName": "Mary"
        }
      ]
    }
  ]
}

我搜索了有关此案例的文档,但找不到任何内容。如何为这个用例编写 Pact 合约?

我会为此编写两个单独的测试用例,并使用提供者状态来区分这两个有效负载。

例如:

  1. 有书的时候
  2. 有电影的时候

或类似的东西。有关这方面的相关背景,请参阅 [1]。

[1] https://docs.pact.io/faq#why-is-there-no-support-for-specifying-optional-attributes