问题标签 [pact-java]

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 回答
2647 浏览

pact - 如何从合同 json 文件为协议消费者生成模拟服务器?

我想使用提供者的合同文件对消费者运行测试。我有

并想用它来生成协议模拟服务器,如:

是否有可能做到这一点?

0 投票
1 回答
2087 浏览

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

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

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

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

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

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

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

0 投票
1 回答
1521 浏览

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

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

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

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

代替

谢谢

0 投票
1 回答
1131 浏览

pact - Pact:如何匹配键与正则表达式匹配的对象?

我正在尝试编写一个契约消费者测试来匹配以下响应。

每个调度对象由与简单正则表达式匹配的未知数量的键组成。但是我看不到使用正则表达式匹配键的方法,同时将值映射到简单的布尔值。

例如,我在 API 中看到了以下方法。

但这将期望一个新对象作为值,而不是原始类型。

有没有办法指定一个不精确的键映射到 pact-jvm 中的原始值?

0 投票
1 回答
842 浏览

gradle - Pact 提供者不向 Pact Broker 发送验证

我是 Pact(消费者驱动的测试)和 gradle 的新手,我使用这个著名的研讨会尝试使用 Java 和 Pact Brocker https://github.com/Mikuu/Pact-JVM-Example的 Pact ,但在最后一部分没有工作时provider 将验证发送给 Pact Broker。它通过 REST API 手动工作,但使用该项目从不发送验证。请帮助了解会发生什么(可能缺少某些东西,某些库或注释?)

当生产者尝试将验证发送到 Pact Broker(docker 中的本地 Broker 使用 gradle with ./gradlew :example-provider:pactVerify)时,我会附上调试日志。我猜 POST 请求的主体丢失了。

0 投票
2 回答
1142 浏览

pact - Pacts:需要非空地图(或非空字段)的匹配规则

我需要帮助来使用 pact-jvm ( https://github.com/DiUS/pact-jvm ) 编写我的消费者契约。

我的问题是我有一个字段是地图列表(数组)。每个地图可以有不同类型的元素(字符串或子地图),例如。

但我们只对其中一些答案感兴趣。

注意:以上只是显示validatedAnswers. 每张answers地图都有几十个元素。

我们真正需要的是:https ://github.com/pact-foundation/pact-specification/issues/38 ,但它计划用于 v.4。与此同时,我们正在尝试不同的方法。我现在尝试做的是指定列表的每个元素都是非空映射。另一种方法是指定列表的每个元素都不为空。这些都可以使用 Groovy DSL 完成吗?

这个:

不起作用,因为它意味着answers预期为空(“预期为空地图但收到地图([...])”,另请参见https://github.com/DiUS/pact-jvm/issues/298) .

所以我想做的是这样的:

或者:

或者:

可以做到吗?

0 投票
1 回答
1920 浏览

java - 如果 junit 5 测试失败,Pact 不会将提供者验证结果发送给 Pact 代理

我用spring创建了一个REST服务。现在我想使用 pact 和 junit 5 来​​测试消费者-提供者-通信。我已经有一个正在运行的 pact-broker(来自https://github.com/jaimeniswonger/pact-broker-openshift)。消费者测试工作正常并发布协议。provider-test 加载这些并尝试验证它们。但测试只有在验证成功的情况下才会上传结果。我尝试使用surefire和failsafe运行测试。

测试代码:

协议代理属性在 pom 中定义:

是否可以配置测试以通知协议代理验证失败?

0 投票
2 回答
516 浏览

spring - 在 Pact Contract Provider 测试中找不到 Pageable 的主要或默认构造函数

我设置了以下协议合同提供者测试

运行测试结果:

getStructuresByDocumentId 方法需要一个 Pageable 对象作为其第二个参数。将注释 @SpringBootTest 更改为

不能解决问题。任何想法,如何解决这个问题?

0 投票
1 回答
47 浏览

consumer - 如何向提供者传达数据格式的合同协议

有没有办法生成 PACT 文件来传达数据格式验证?

我正在尝试完成的一个例子:作为消费者,我希望有一个包含一些数据的“phoneNumber”字段。我还希望电话号码必须包含 7 到 10 位数字。它可能包括破折号和/或括号。

在消费者测试(下面的代码)中,我构造了响应对象,因此我可以按照我的预期指定格式。但这并不意味着提供者受到同样的限制。(即,他们可能以这种方式提供它,但他们也可能以我不期望的格式提供它)。

我猜测验证数据的最合乎逻辑的方法是在 PACT 文件中提供一些 RegEx 作为元数据。这是可以做到的吗?如果是这样,你如何在代码中提供这个。

下面的代码片段有助于可视化我是如何执行此操作的:(代码片段的功劳转到“ https://github.com/Mikuu/Pact-JVM-Example ”)

0 投票
1 回答
265 浏览

pact - 按顺序运行 Pact Provider 测试类

我正在使用 pact-jvm 提供程序 spring。我有两个不同的 pact(.json) 文件(order.json 和 irs.json),我需要按顺序运行它们(顺序后跟 irs),但是根据字母顺序选择测试类,irs 运行第一和顺序运行第二。有没有办法调用执行特定的测试类提供者状态或定义测试类执行顺序?