问题标签 [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.

0 投票
1 回答
793 浏览

microservices - 针对公共 API 的 PACT 提供者验证

我正在尝试使用 pact jvm 对消费者驱动程序合同测试进行测试,并能够生成消费者端合同文件。在提供者端验证期间,如何提供公共 API 而不是 localhost 大多数示例仅使用 localhost 作为提供者,请提供任何帮助

0 投票
1 回答
2969 浏览

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 在命名数组中声明两个示例字符串值?

0 投票
1 回答
2087 浏览

java - 使用 java 创建 PACT 我无法在正文中设置 numberType 的最小值

我正在学习如何在我的 Java 项目中使用 PACT,并且我想对预期输出定义一些值限制。例如,在一个请求/hello-world中,我希望在 id 属性中接收一个数字,该数字应该始终大于零。

有人可能会说 PACT 它无法应用这样的限制。但是,查看生成的 PACT,看起来为生成器创建最小值和最大值应该是 PACT 的一种可能:

我试图找到一些方法来做到这一点,查看 PACT 代码。因此,按照numberType方法的轨迹, LambdaDsl

该方法使用以下可能的方法调用object.numberTypes它:LambdaDslJsonBody

只有一个生成器,它总是从零开始。

那么,有一些可能的方法可以为 PACT 创建这种随机生成器,以确保生成的随机数的值大于零或小于 100?

0 投票
2 回答
2194 浏览

pact - Pact 合同测试:如何使用 json 值生成动态 PactDslJsonBody?

如何使用 json 值生成动态 PactDslJsonBody?Pact 团队是否可以提供自动生成器来动态分配主体?

契约主体:

断言响应:

基于断言响应(作为输入)并创建像

断言响应:

我知道在正文中我们可以提供 json 本身。但我需要使用 Json 生成 PactDSLJson 主体。

0 投票
1 回答
720 浏览

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 - 但这没有帮助。

有谁知道我的问题的解决方案?

0 投票
1 回答
601 浏览

java - 将 Java POJO 转换为 PactDslJsonBody

我正在尝试编写一个辅助类来直接从 Java Pojo 获取 PactDslJsonBody。但是,它无法创建嵌套的 Json 对象。有人可以解释一下为什么吗?下面是我的代码:

帮助类代码 - 用于将输入的 java pojo 转换为 PactDslJsonBody


如何使用这个类的片段:


失败的测试:输入类:

预期结果:

实际结果:

0 投票
1 回答
442 浏览

pact - Pact JVM 更新向后兼容性

我正在尝试将数十个服务更新为au.com.dius:pact-jvm-consumer-junit_2.12:3.5.12from,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)有没有办法将提供者更新到新版本,并且路径中仍然有旧的消费者库并且不会失败?

0 投票
0 回答
50 浏览

pact - pact 规范 v.4 是否会解决 #401 以及何时在 pact-jvm 中发布/支持它

我们正在使用 pact-jvm,由于错误#401,我们不能将 eachKeyMappedToAnArrayLike 用于子对象,这对我们来说是一个真正的问题。

我遵循了问题中的评论并最终在 pact v.4 规范中提出了一项更改以忽略地图中的键:v4-spec

这个提议的更改是否会修复 eachKeyMappedToAnArrayLike 中的错误,如果是这样,pact-jvm 何时发布/支持 v.4?

如果它不是#401的修复程序,是否有计划?正如我所说,这正在使我们陷入瘫痪。

0 投票
1 回答
884 浏览

java - 在 pactdsl 请求正文中使用正则表达式

我希望我的协议服务器在使用 Header 进行 POST 调用时返回自定义响应Content-Type: application/x-www-form-urlencoded
但是,POST 调用的主体并不总是相同的,只有一个前缀保持不变。
例如,它必须返回相同的东西,无论我用 body
input_text=LOGSomeStuffHERE还是用input_text=LOGAnoutherStuff
(如你所见,input_text=LOG是常量部分)调用它这是我尝试过的:

PactDsl 是否支持请求部分的某种正文匹配?

0 投票
1 回答
1521 浏览

pact - 匹配所有项目的 PactDslJsonArray 根级数组

我可以成功地使用 PactDslJsonArray.arrayMaxLike(3,3) 创建一个验证最多返回 3 个项目的协议。

但是,我想重用另一个请求的正文,而无需再次指定属性。

我正在寻找的是类似的东西:

代替

谢谢