允许带参数的多个提供者状态(Golang)

时间:2016-11-09 16:55:02

标签: go pact

由于我们的团队(即我自己和另外两名开发人员)在过去一周左右的时间内飙升了PACT,其中一个关注点是没有能力将参数提供给提供者国家。由于没有这个关键功能(定于版本3发布),我们可能不会从我们各自的服务子团队中购买。

@MattFellows - 有关版本3何时可用于Go的任何预测?我们有机会早点获得此功能吗?

允许带参数的多个提供者状态 在以前的版本中,提供程序状态被定义为描述性字符串。如果不将值编码到描述中,则无法推断状态所需的数据。

{
  "providerState": "an alligator with the given name Mary exists and the user Fred is logged in"
}
The change would be:

{
  "providerStates": [
    {
      "name": "an alligator with the given name exists",
      "params": {"name" : "Mary"}
    }, {
      "name": "the user is logged in",
      "params" : { "username" : "Fred"}
    }
  ]
}

1 个答案:

答案 0 :(得分:1)

你是对的,因为它在第3版之前无法使用。

然而,你仍然可以实现你的目标。状态本身只是 Consumer Provider 上的一些数据集的句柄 - 可以是一对一或一对多映射 - 它完全取决于你。

通常,提供商会在验证过程中通知状态,然后会设置一个测试数据夹具(通常是种子数据库)来设置“状态”。基于该引用的整个系统,允许 Consumer 测试运行。

虽然通过参数和多个状态的能力很好,但它有点高级功能,我非常怀疑这将是你作为一个团队遇到的第一个问题。我自己从不需要使用它们。

有关这个原始但有效的示例,请查看项目gin文件夹中的examples代码。