问题标签 [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 投票
3 回答
1732 浏览

pact - Pact 中的 Spring 模拟测试

我正在尝试采用 Pact。我了解等式的消费者方面,它看起来非常好。但我对制片方感到困惑。

文档似乎提倡运行提供程序应用程序,并针对正在运行的服务器验证合同。

我宁愿不这样做。首先,我需要为每个协议创建一个包含适当信息的数据库,这至少可以说是痛苦的。其次,启动应用程序会很麻烦——我有没有提到它是一个整体?- 最后,有 POSTS 会改变数据库的状态,并使测试运行变得脆弱。

我想做的是用协议做一个 mockMvc 风格的测试。我想模拟我的服务,只测试端点,我认为在这种情况下应该测试什么。

我如何通过 Pact 实现这一目标?

0 投票
1 回答
392 浏览

api - 由于 NoHttpResponseException 导致 Pact 文件创建失败:127.0.*.*.*** 未能响应

我无法创建 Pact 文件。面对 NoHttpResponseException : 127.0.0.1:56314 未能响应。我能够成功生成协议文件,但是在执行 Maven->clean 之后,我遇到了一系列问题。请让我知道可能是什么原因,我现在该如何解决?

我的 POM 文件:

我的契约测试文件:

0 投票
0 回答
409 浏览

java - pact-jvm-server Complete 返回 400

我在 Docker 中有一个pact-jvm-server实例,每当我调用 /create 方法时,它都会创建一个存根服务器并返回正确的响应。但是现在,当我尝试使用 /complete 调用和 POST 请求正文中的端口删除所选端口上的存根服务器时,即使它删除了提供端口上的存根服务,它总是返回 400。

任何帮助,将不胜感激。

码头工人日志:

如果我通过 curl 调用它:

0 投票
1 回答
276 浏览

postgresql - 非dockerized postgresql的pactbroker docker镜像连接问题

我正在使用存在于

相同的图像出现在

我没有使用 postgresql 的 docker 映像。我有自己的 Postgres 服务器托管在

172.15.16.23 (local ip), port 5432 , admin usaer as pactbrokeruser and password as 'password' and db name is pactbroker-db.

我将文档中给出的环境变量设置为

  • PACT_BROKER_DATABASE_ADAPTER = postgres
  • PACT_BROKER_DATABASE_USERNAME = pactbrokeruser
  • PACT_BROKER_DATABASE_PASSWORD = 密码
  • PACT_BROKER_DATABASE_HOST = 172.15.16.23
  • PACT_BROKER_DATABASE_NAME = pactbroker-db

我正在使用 docker run 命令作为

但仍然没有发生连接。在 docker 日志中,我收到错误“连接尚未建立”,请您帮我编写将 dockerized pact-broker 连接到非 dockerized postgresql 的正确命令。---------------------------------------来自Beth的评论后--------我按照你的建议试过了。BUt 环境变量工作正常。我尝试编辑 Git 项目https://github.com/DiUS/pact_broker-docker中给出的 docker compose 文件 ,如下所示

版本:'2'

服务:

broker_app:图像:dius/pact-broker 端口:-“80:80”环境:PACT_BROKER_DATABASE_USERNAME:postgres PACT_BROKER_DATABASE_PASSWORD:Welcome123 PACT_BROKER_DATABASE_HOST:10.0.0.204 PACT_BROKER_DATABASE_NAME:postgres

当我在外部使用它时,我已经删除了数据库图像下载部分。我在图像中提供了我的外部 Postgres 数据库详细信息,在此处输入图像描述

因此,作为主机,我提供了服务器的 ip,是否正确?

0 投票
2 回答
2041 浏览

microservices - 协议验证不起作用 - 消息提供程序测试期间未找到带注释的方法

我有一个项目,我们正在使用消息提供程序,因为它涉及基于 Apache kafka 的消息传递。

消费者方面的 maven 目标在本地和 Jenkins 都运行良好。

提供方的协议验证在 Jenkins 中失败,说“没有为交互找到带注释的方法”。

我的 POM.xml 配置如下:

0 投票
1 回答
1617 浏览

spring - Pact Provider @State Test 总是返回 404

我能够为 Spring Boot 项目运行测试,但我总是在 @State 测试中得到 404。

奇怪的是,我可以通过打印出请求信息和 Authorization 标头来判断它到达了正确的端点。我将调试语句放入并验证我可以使用与测试相同的凭据和端点进行调用。但是,测试总是以 404 失败。我的设置中是否缺少某些内容?

0 投票
2 回答
5063 浏览

pact - pact-jvm:如何解决 au.com.dius.pact.consumer.PactMismatchesException

我正在尝试使用 pact-JVM 在我们的两个服务之间生成一个协议。但是当我尝试运行 Java 类时,我得到了这个异常。

1) 我怀疑契约体有问题,对吗?在 PactDslWithProvider 的 JSON 正文中有一个额外的“消息”参数,但在 runTest1() 方法中,我仅等同于列表,当我检查结果时,它们对我来说是相同的。2) 在 runTest1() 方法中提供实际的提供者 URL 是否正确?(提供者已经到位)

下面是我的Java类

}

编辑:

我刚刚发现,如果我注释掉 @Rule 部分,测试就会通过 - 但不会生成协议文件。我应该为此明确指定一个“协议”文件夹吗?

0 投票
2 回答
4119 浏览

pact - 使用 maven 插件将契约发布到契约代理

我能够生成一个 pact 文件,然后使用 maven 插件对其进行验证。现在,我正在尝试使用协议代理发布协议。

到目前为止我所做的是基于以下链接 - https://github.com/DiUS/pact-jvm/tree/master/pact-jvm-provider-maven#publishing-pact-files-to-a-pact -broker-version-320

我在这里的问题是如何生成 pactBrokerUrl?这是否涉及使用此处所述的协议代理的 dockerized 图像?https://github.com/DiUS/pact_broker-docker 或者我可以只使用 warmuuh 的 Pact Broker Maven 插件吗?

0 投票
0 回答
427 浏览

groovy - Pact Groovy Mock 与正文中的数组

我想对我的模型进行建模,使其主体由n 个元素组成的数组组成。下面的代码只在数组中创建一个元素,而它应该产生三个。

奇怪的是,如果我命名集合,它实际上会生成三个对象:

我哪里错了?这是一个错误吗?

0 投票
0 回答
2269 浏览

arrays - 如何生成一个 Pact 文件,其响应正文与带有 groovy 的字符串数组匹配

我是 Pact 的新手,也是 groovy 的新手。

我想写一个协议把它交给一个提供者。

提供者应使用字符串数组( ["foo", "bar", "foobar"].

这是我的工作状态,它被剥离到必要的部分,但仍然是可执行的:

此测试生成以下协议文件:

Pact 文件希望提供者始终以["foo", "bar", "foobar"]

我想要的是一个通用的字符串数组。

当我尝试以下操作时:

生成的 Pact 文件如下所示:

有matchingRules,这看起来不错。但是根级别上有一个对象,我需要数组作为根。

有没有办法将数组作为根元素,字符串按类型匹配而不是按值匹配?