问题标签 [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 回答
904 浏览

java - 如何在消费者协议 3.5.3 版中的 PactDslJsonBody 上设置正则表达式匹配器

将 pact.consumer.version 升级到 3.5.3 后,我无法在 PactDslJsonBody 上创建正则表达式匹配器。以下是版本 3.2.8 的代码:

现在在 3.5.3 版本中,setMatchers 函数给出了编译错误,因为它现在支持 Category 对象。那么如何使用 Category 对象来设置 json body 请求匹配器呢?

我需要帮助!

0 投票
2 回答
744 浏览

json - Pact-jvm java noob 问题

我有一些关于 Pact JVM (Java) 的菜鸟问题;

  1. 如果提供者 json 结构响应已知(例如通过使用 Postman 查询 api),是否可以将 Postman json 主体自动转换为 pact 合同文件,而无需运行(java)消费者片段创建方法,或者示例将其转换为 java PactDslJsonBody() 结构?

  2. 创建 pact 文件时是否需要启动并运行提供程序(spring-boot)(即使 json 响应结构已知)?避免每次创建合约时都需要启动 spring-boot 服务器会很好,尤其是在合约细节已知的情况下?特别是如果为许多微服务创建许多协议合约。

  3. 是否有比教程示例中找到的这个非常小的 json 主体更高级的返回提供程序 json 结构的示例;
    [1] http://the-creative-tester.github.io/Java-Consumer-Driven-Contract-Testing/ 此外,如果可以共享仅验证要返回的结构子集的附加示例,那就太好了存在,因为我们得到了很多随机的响应。

  4. 有人可以向在线 https(而不是 http)rest 服务(例如 google、facebook 或类似提供商)分享一个 pact jvm 验证的 pact verify java 代码示例吗?(或者例如这个:[2] https://jsonplaceholder.typicode.com/posts

  5. 我在上面的示例 [1] 中遇到了很多 java 编译错误。是否有任何版本级别的协议(和 spring)不太可能与 java spring 框架版本不匹配?

谢谢你的时间!

0 投票
1 回答
597 浏览

pact-jvm - 无法在协议代理中使用 pact-jvm-provider-maven_2.11 验证 https 端点

这是我给服务提供商的 pom 片段

并在 pact:verify 操作之后。我得到以下堆栈跟踪的构建错误。我可以看到在 localhost 代理中生成的协议文件。但是当端点更改为 https 时,验证一直失败。

0 投票
1 回答
134 浏览

java - pact-jvm 手动创建 pact

我正在探索将 pact-jvm 与已经存在并且正在高效工作的客户和提供者一起使用的机会。目前,我尝试手动创建一个协议文件并为提供者验证它。我想知道这是否有意义。我担心也许我没有明白这一点。这没问题还是我偏离了轨道?

提前致谢

0 投票
1 回答
385 浏览

java - pact-jvm 测试多层授权

我想通过 pact-jvm 测试我的授权服务。在我的请求中,我通过帖子发送了一个 html-body,包括一些用于验证用户的元数据 - 包括他的用户名,并且也在我使用 Http Basic Auth 的标头中发送。从配置文件中读取用户名+密码后,我在 JUnit-Test 中使用 @TargetRequestFilter 在我的测试类中添加标题。这是因为应用程序在不同的层上运行。每层都有另一个用户名+密码组合。该协议应该适用于每一层。此外,当用户更改时,我只想对配置文件进行少量更改。它包含用户名、密码、主机名、端口和协议。

问题是:我需要根据配置文件的内容来操作请求的 html-body 以匹配我在测试类中设置的标头,而无需每次都创建新的 pact 文件。

所以我的问题是:有没有办法从 JUnit 类中操纵我期望(通过协议)的 html-body 的选择性部分?

也许还有另一种方法可以解决我还没有看到的问题。

提前致谢!


为清楚起见,请求示例:

我无法更改提供者或消费者。我只是来做验证工作的。

编辑:也许我忘了说......我想让响应体匹配(实际和预期),没问题。但我需要根据我的配置文件修改请求的 html 正文。

0 投票
2 回答
1287 浏览

pact - 为什么在@PactVerification 中断言?

我不明白 assert 在@PactVerification. 对我来说,它更像是一种复杂的说法1 == 1。例如:

所以首先在“createPact”中我们声明

然后在givenGet_whenSendRequest_shouldReturn200WithProperHeaderAndBody注释中@PactVerification我们这样做

但为什么?我们就是这么说的!据我所见,断言没有出现在生成的 Pact 文件中。它的接缝填充没有目的?

除此之外,我认为合同测试的想法是减少对集成测试的需求,因为例如如果测试数据发生变化,它们可能会中断。但是这里我们仍然依赖测试数据。如果 Provider 中没有“Tom”,则测试将失败。我主要想测试合同是否损坏,而不是测试数据是否已更改。

0 投票
1 回答
88 浏览

pact - 涉及会话或工作流的 API 的合同测试

您好我正在尝试为产品购买工作流程编写合同测试。所以很明显我不能在不调用 Add to Cart API 的情况下直接调用 Checkout API。但正如我观察到的验证命中,单独的路径可能与 Pact JSON 文件中列出的顺序不同。

那么我应该如何处理这种涉及会话管理和工作流的场景(意味着 step1 应该成功,然后 step2 才会成功)

谢谢!

0 投票
0 回答
765 浏览

java - 合约测试不适用于具有两个不同合约(messagePact 和 RequestResponsePact)的微服务

我有两种不同的合同 mS 方案:

1st- 直接 mS-mS 合同测试,我使用 RequestResponsePact 创建 Pact。

第二 - 在两个名为 Kafka 的微服务之间有一个 mq,我使用 MessagePact 创建 Pact。

不允许我对两个合同使用相同的 buildername。

代码:

注意:当我单独运行这两个合约时,它会生成 Success 和 Pact 文件。当我同时运行它们时,抛出了以下错误消息:

0 投票
0 回答
117 浏览

java - pact-jvm mockserver 达到连接限制

我正在生成一个相当大的协议文件。参数化测试将单个交互附加到 csv 文档中的每一行的 pact 文件。

不幸的是,使用@Rule PactProviderRuleMk2 创建的模拟服务器在达到连接限制时在 200 次测试后锁定。显然,连接没有被拆除。对于不到两百个测试用例,系统可以完美运行。

有什么办法可以增加mockserver的连接限制,减少连接数或者关闭连接?


0 投票
1 回答
897 浏览

pact - 契约 JVM closeArray

我在 pact-jvm-consumer 中遇到 closeArray 问题。

给定这样的 Json,如何构造“DslPart imeiResults = new PactDslJsonBody()”-statment。

我试过这样:

但这不起作用,例如 .closeArray() 不返回 PactDslJsonBody 而是 DslPart,所以在 .closeArray() 之后你永远不能拥有任何东西?我不明白,有人可以显示如何正确执行此操作的代码吗?