【问题标题】:Generate json schema in addition to, or from pact contract在契约契约之外或从契约契约生成 json 模式
【发布时间】:2017-06-29 23:42:03
【问题描述】:

在我的客户端代码中,我使用 json 模式来验证 json 响应(使用 ajv)。我计划使用pact-js 生成协议以针对提供者运行以进行合同测试。

我希望我的客户端代码在运行时验证期间使用的架构以及合约测试在协议验证期间使用的架构有一个单一的事实来源。有没有办法从 pact 文件生成 json(或 swagger)模式,或者是否有一个库使用 pact 文件本身对单个 http 响应进行运行时验证(而不是仅用于合同测试中的合同验证) ?

我意识到这是一个先有鸡还是先有蛋的问题,因为我需要首先运行客户端代码作为测试运行的一部分以生成协议(进而生成 json 模式),所以我必须弄清楚为此制定了一个良好的工作流程。

我也意识到合约测试应该减少对运行时验证的需求,但合约测试仍然不够全面,无法捕捉所有现实世界的场景。

【问题讨论】:

    标签: pact


    【解决方案1】:

    简短的回答是否定的,尽管我相信有一些 OSS 库试图解决这个问题(没有一个是官方的,但我记得有一次在论坛上出现过)。

    不管怎样,尽管意图是好的,但我们相信任务是futile。这两种技术是互补的,但毫无疑问会随着时间的推移而发展,这使得管理变得更加困难。

    您可以通过多种方式与 Swagger 集成,例如,Atlassian 的优秀人员创建了一些您可以查看的 [1][2]。

    [1]https://bitbucket.org/atlassian/swagger-request-validator

    [2]https://bitbucket.org/atlassian/swagger-mock-validator

    [3]https://github.com/pact-foundation/pact-specification/issues/28

    【讨论】:

    • 感谢马修的参考。如果我已经有了一个 swagger 规范,这些库看起来很有用;但是,我正在寻找可以从协议文件中生成 swagger 规范(或 json 模式)的东西。然后,我将在我的生产代码中使用该 swagger 规范(或 json 模式)进行运行时验证。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多