在协定中使用JSON模式进行合同测试

时间:2018-11-02 15:55:00

标签: testing microservices pact

我前一段时间开始体验协定,我想知道你们中的任何人是否知道协定是否支持Json模式!

我将描述流程。假设您有两个微服务:

  • 微服务A-消费者
  • 微服务B-提供者

该提供程序公开一个Api-本质上是一个POST请求,并且期望显式的json主体有效负载(需要某些字段)。 假设:

{
  "id": "123",
  "name": "Bob"
}

id和name均为必需属性。

现在假设提供程序已更改其行为,以期望具有相同的json有效负载,但具有附加属性:

{
  "id": "123",
  "name": "Bob"
  "extraProperty": "newProperty"
}

我的问题是,是否有使用pact框架检测这种违约的条件?如果不是,那么认为什么是测试这种情况的最佳方法。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

  

我的问题是,是否有使用pact框架检测这种违约的条件?

当然-这就是Pact的目的!

如果 const fixedQuery = this.props.location.search.replace(/['"]+/g, ""); console.log(fixedQuery ); const userQuery = querystring.parse(fixedQuery ); console.log(JSON.stringify(userQuery)); console.log(JSON.stringify(userQuery.q)); 是一个新的必填字段(除了extraPropertyid之外),则当提供者测试针对的是由消费者产生的,不与消费者产生的合同时如果知道新字段,那么您的API将无法按预期运行,并且协议测试将失败。

关于您的其他问题:

  

我想知道你们中的任何人是否知道协议是否支持Json模式!

我不确定您的意思-我们当然支持JSON格式。如果您的意思是JSON Schema,那么可以,但是您仍然需要编写测试(请参见https://docs.pact.io/faq#why-doesnt-pact-use-json-schema)。