问题标签 [pact-jvm]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
microservices - 针对公共 API 的 PACT 提供者验证
我正在尝试使用 pact jvm 对消费者驱动程序合同测试进行测试,并能够生成消费者端合同文件。在提供者端验证期间,如何提供公共 API 而不是 localhost 大多数示例仅使用 localhost 作为提供者,请提供任何帮助
lambda - 如何在 Lambda DSL 中为 Pact 建模命名数组和对象(pact-jvm-consumer)
下面的 Json 包含我不知道如何在基于 lambda 的 DSL 中为 Pact 建模的三件事(而且我无法通过阅读https://github.com/DiUS/pact-jvm上提供的示例来弄清楚/tree/master/pact-jvm-consumer-java8)。
Json 对象由 3 个属性组成;“Inventory”包含一个数组(只有一个元素长)和两个简单的键值对。
1) 如何使用基于 lambda 的 DSL 声明命名数组?
Inventory-array 中的第一个(也是唯一的)对象由两个命名对象“Car”和“Camera”组成。
2) 如何使用基于 lambda 的 DSL 声明命名对象?
在“Camera”对象中有一个名为“Conditions”的数组,其中包含两个字符串值。
3) 如何使用基于 lambda 的 DSL 在命名数组中声明两个示例字符串值?
java - 使用 java 创建 PACT 我无法在正文中设置 numberType 的最小值
我正在学习如何在我的 Java 项目中使用 PACT,并且我想对预期输出定义一些值限制。例如,在一个请求/hello-world
中,我希望在 id 属性中接收一个数字,该数字应该始终大于零。
有人可能会说 PACT 它无法应用这样的限制。但是,查看生成的 PACT,看起来为生成器创建最小值和最大值应该是 PACT 的一种可能:
我试图找到一些方法来做到这一点,查看 PACT 代码。因此,按照numberType
方法的轨迹, LambdaDsl
:
该方法使用以下可能的方法调用object.numberTypes
它:LambdaDslJsonBody
只有一个生成器,它总是从零开始。
那么,有一些可能的方法可以为 PACT 创建这种随机生成器,以确保生成的随机数的值大于零或小于 100?
pact - Pact 合同测试:如何使用 json 值生成动态 PactDslJsonBody?
如何使用 json 值生成动态 PactDslJsonBody?Pact 团队是否可以提供自动生成器来动态分配主体?
契约主体:
断言响应:
基于断言响应(作为输入)并创建像
断言响应:
我知道在正文中我们可以提供 json 本身。但我需要使用 Json 生成 PactDSLJson 主体。
java - 为什么 mvn pact:publish 抛出 NoClassDefFoundError kotlin.TypeCastException
我正在尝试以这种方式使用 maven-plugin 将 Pact-File 发布到我的 Pact-Broker(取自 github Pact-Project):
如果我尝试使用 pact:publish 执行 maven 构建,我会收到以下错误:
堆栈跟踪的顶部:
使用 JUnit-Tests 创建 Pact-File 工作正常,所以我假设我在类路径中有正确的依赖项和所需的文件。
我错过了什么?看来, kotlin.TypeCastExeption-Class 在包中
所以我在收到此错误后尝试将依赖项(版本 1.2.0)添加到我的 pom - 但这没有帮助。
有谁知道我的问题的解决方案?
java - 将 Java POJO 转换为 PactDslJsonBody
我正在尝试编写一个辅助类来直接从 Java Pojo 获取 PactDslJsonBody。但是,它无法创建嵌套的 Json 对象。有人可以解释一下为什么吗?下面是我的代码:
帮助类代码 - 用于将输入的 java pojo 转换为 PactDslJsonBody
如何使用这个类的片段:
失败的测试:输入类:
预期结果:
实际结果:
pact - Pact JVM 更新向后兼容性
我正在尝试将数十个服务更新为au.com.dius:pact-jvm-consumer-junit_2.12:3.5.12
from,au.com.dius:pact-jvm-consumer-junit_2.11:3.2.13
但似乎新的消费者版本正在生成旧提供者版本 ( au.com.dius:pact-jvm-provider-junit_2.11:3.2.13
) 无法处理的协议。
旧协议有一个哈希映射,其中在根目录添加了匹配规则,如下所示
新的消费者添加和包装body
匹配器。以下是使用新消费者版本生成的相同协议的示例
由于该更改,提供程序无法解析匹配规则并出现以下错误:
查看 v3规范,新消息似乎是有效的,旧的提供程序库(v3.2.13)不支持它吗?我查看了代码并发现了这个提交,在我看来它是在哪里引入了更改。
根据我的测试,新的提供程序库(3.5.12)可以处理新旧格式,但是如果类路径中存在新的提供程序库和旧的消费者库,则 http 合同测试会因运行时错误而失败。
问题:
1)有没有办法强制新消费者以旧方式创建协议,并且该表单规范是否符合?
2)有没有办法将提供者更新到新版本,并且路径中仍然有旧的消费者库并且不会失败?
java - 在 pactdsl 请求正文中使用正则表达式
我希望我的协议服务器在使用 Header 进行 POST 调用时返回自定义响应Content-Type: application/x-www-form-urlencoded
。
但是,POST 调用的主体并不总是相同的,只有一个前缀保持不变。
例如,它必须返回相同的东西,无论我用 body
input_text=LOGSomeStuffHERE
还是用input_text=LOGAnoutherStuff
(如你所见,input_text=LOG
是常量部分)调用它这是我尝试过的:
PactDsl 是否支持请求部分的某种正文匹配?
pact - 匹配所有项目的 PactDslJsonArray 根级数组
我可以成功地使用 PactDslJsonArray.arrayMaxLike(3,3) 创建一个验证最多返回 3 个项目的协议。
但是,我想重用另一个请求的正文,而无需再次指定属性。
我正在寻找的是类似的东西:
代替
谢谢
担