当前位置: 首页 > 知识库问答 >
问题:

生成json模式,或者从pact合同生成json模式

葛胡媚
2023-03-14

在我的客户机代码中,我使用json模式来验证json响应(使用ajv)。我正计划使用pact-js生成pacts,以便对提供者运行以进行契约测试。

我希望我的客户机代码在运行时验证期间使用的模式和契约测试在协议验证期间使用的模式有一个真实的来源。是否有一种方法可以从pact文件生成html" target="_blank">json(或swagger)模式,或者是否有一个库使用pact文件本身来对单个http响应进行运行时验证(而不是仅仅用于契约测试中的契约验证)?

我意识到这是一个有鸡有蛋的问题,因为我需要首先运行客户机代码作为测试运行的一部分来生成pacts(然后是json模式),所以我必须为此找到一个好的工作流。

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

共有1个答案

苏鸿志
2023-03-14

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

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

您可以通过几种方式与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

 类似资料:
  • 问题内容: 有人知道如何从现有的XML模式(XSD文件)生成JSON模式吗?有没有可用的工具? 问题答案: 免责声明 :我是Jsonix的作者,Jsonix是一个功能强大的开源XML <-> JSON JavaScript映射库。 今天,我发布了具有新JSON Schema生成功能的新版本的Jsonix Schema Compiler 。 让我们以采购订单模式为例。这是一个片段: 您可以使用提供的

  • 问题内容: 我们有这个json模式草稿。我想获取我的JSON数据的样本并为JSON模式生成一个框架,该框架可以手动进行修改,添加诸如description,required之类的内容,而这些不能从特定的示例中推断出来。 例如,从我的输入: 我将运行json_schema_g​​enerator工具,并得到: 此示例已手动编码,因此可能存在错误。有没有什么工具可以帮助我进行JSON转换-> JSON

  • 我一直在努力寻找一些可以从java中的yang模型生成示例xml/json数据的工具,例如对于xsd,有一些工具可以生成示例xml。 我试过平:1。它是用Python编写的。2.转换后,它给了我yin格式,这是相当于yang规范的xml。例如,对于以下阳代码,如果我使用pyang将其转换为阴: 这就是我得到的- 相反,我想要的是 这样我就可以得到xml,输入详细信息并根据相同的数据进行验证。

  • 我希望为WebAPI生成JSON模式,包括来自XML注释的文档。这主要是为了让我可以将它导入到我们的API文档中(使用apiary.io ),我已经通过添加swagger(和swashbuckle)然后在每个服务上使用raw链接成功地获得了一个变通解决方案——但理想情况下,我希望有一些更干净的东西,它可以跨所有API工作(这必须根据服务/控制器来完成),并且没有太多的依赖性。 在我去看看swagg

  • 问题内容: 我们正在使用Oracle 11数据库和Java开发环境(使用Eclipse),并且希望将多个xml模式迁移到SQL模式。 已经看过xsd了,但是确实需要一些可以在不安装SQL Server的情况下从ant / Eclipse运行的功能。 问候, 安迪 问题答案: 另一个选择是使用JAXB生成Java对象,并使用Hibernate创建基于类层次结构的架构。 话虽如此,这取决于您要尝试做的

  • 亦称: 建造者模式、Builder 意图 生成器模式是一种创建型设计模式, 使你能够分步骤创建复杂对象。 该模式允许你使用相同的创建代码生成不同类型和形式的对象。 问题 假设有这样一个复杂对象, 在对其进行构造时需要对诸多成员变量和嵌套对象进行繁复的初始化工作。 这些初始化代码通常深藏于一个包含众多参数且让人基本看不懂的构造函数中; 甚至还有更糟糕的情况, 那就是这些代码散落在客户端代码的多个位置