问题标签 [pact]

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

pact - PACT:如何防止消费者生成不正确的合同

我们有两个微服务:Provider 和 Consumer,它们都是独立构建的。消费者微服务在消费提供者服务的方式上犯了一个错误(无论出于何种原因),结果,错误的契约被发布到契约代理。消费者服务构建成功(并且可以一直发布!),但是下一个提供者服务构建将由于错误的原因而失败。所以我们最终得到了损坏的 Provider 服务构建和损坏的 Consumer 版本。

防范此类情况的最佳做法是什么?

我希望 Pact Broker 可以在合约发布时自动触发 Provider 测试,并在合约失败时通知消费者,但似乎并非如此。

谢谢!

0 投票
1 回答
100 浏览

java - PactDslJsonObject 被解析为 Empty Map {}

下面的对象在调试时显示为{}而不是{"types" : ["Ice Cream"] }预期的那样。为什么会这样。

0 投票
1 回答
512 浏览

pact - au.com.dius.pact.model 包中缺少“PactFragment”

我是 Pact 的新手。

我从 Github 下载了代码,“pact-jvm”项目。我使用 Gradle 设置从“现有源”在IntelliJ中创建了一个新项目。
它很好地导入了所有包。

但是,当我尝试在其中运行一些测试时,我得到了一个

找不到标志

错误如下,

错误:(5、30)java:找不到符号
符号:类 PactFragment
位置:包 au.com.dius.pact.model

我查看了我的包“package au.com.dius.pact.model”,发现这个包中缺少“PactFragment”。

除此之外,此包中还缺少以下类。

但是,我对来自 Github 的“pact-jvm”项目的所有源代码进行了“git pull”。当我执行“git pull”时,它表明一切都是“已经是最新的”。

有什么我可能缺少的指针吗?
为什么我在这个包'package au.com.dius.pact.model'中缺少这么多类?

谢谢,埃里克

0 投票
2 回答
1591 浏览

pact - pact-jvm 消费者契约测试

我是新来的契约。我的项目是Java项目。我通读了 pact 文档并找到了 github 项目https://github.com/DiUS/pact-jvm/tree/master/pact-jvm-consumer-junit 我将它导入到我的 eclipse IDE 中。我从这里被困住了。1.首先运行哪个测试。ExampleJavaConsumerPactRuleTest 还是 ExampleJavaConsumerPactTest?2.我看到它是一个gradle build。如何配置运行配置。要提供哪些参数和命令?

0 投票
1 回答
1474 浏览

pact - 为什么这个 pact-jvm 提供者测试失败了?

我们有一个仅在 Jenkins 上失败的提供程序测试,这使我无法进行调试。

以下是 Jenkins 的一些相关日志:

(有些遗漏……)

交互在协议文件中如下所示:

我的印象是名称应该匹配类型而不是确切值,并且似乎在差异中有一个“名称”字段。

为什么这个测试失败了?

编辑:

这是生成协议片段的代码:

0 投票
1 回答
549 浏览

pact - 如何在提供者端为同一消费者跨类分发测试

我有一个场景,我的提供者服务提供 3 个功能。在消费者端,我有 3 个不同的类来为这 3 个功能编写测试。生成 pact 文件时,它包含具有相同消费者-提供者组合的所有测试。到目前为止,一切都很好。

当涉及到提供者测试时,我希望为 3 个功能提供 3 个类的相同结构。但是,如果我这样做了,并且当我从 1st class 运行测试时,PACT 还会尝试根据 pact 文件搜索其他方法,并且找不到其他方法的 cos 失败。我该如何处理这种情况。

示例:
ConsumerTestClass1
ConsumerTestClass2
ConsumerTestClass3

都定义以下协议
@Pact(provider = PROVIDER, consumer = CONSUMER)
public MessagePact createPactForCareerLevelClassifier(MessagePactBuilder builder) {}

现在假设每个类都有 3 个测试方法,所以 pact 文件总共有 9 个

在提供者方面,我有 3 个测试类
ProvdiderTestClass1
ProvdiderTestClass2
ProvdiderTestClass3

ProviderTestClass1 有实际测试用@PactVerifyProvider
注释 现在当我为 ProviderTestClass1 运行测试时,PACT 抱怨它无法找到与其他 6 个实际在 ProvdiderTestClass2 和 ProvdiderTestClass3 类中的合同匹配的方法

0 投票
1 回答
176 浏览

http - 协议 HTTP 消息消费者

我在两个组件/微服务之间有关系,其中组件 A 通过 HTTP 向组件 B 发送事件。在传统的协议 HTTP 消费者/提供者模式中,A 是 B 的消费者,因为 A 正在发送请求,B 正在响应。但是,在这种情况下,B 是 A 提供的事件的真正消费者。

有没有办法实现消费者/提供者测试,以便消费者测试可以写在接收端(B)而不是发送端?

我已经看到已经引入了消息协定,听起来它可以在这种情况下使用,但我还没有看到任何易于理解的例子来说明它是如何实现的,以及它是否可以像在我的场景中一样与 HTTP 结合使用。

我正在使用 pact-jvm-junit。

0 投票
0 回答
48 浏览

pact - Pact - 如何在请求中写下期望?

我已经成功地对提供商给出的响应产生了预期。现在,我如何编写期望以确保我作为消费者发送给提供者的东西是正确的?

也就是说,如何确保请求参数是预期的?

0 投票
2 回答
3784 浏览

pact - 使用 Pact Broker

有人可以详细指出如何将 JSON 协议逐步发布到 Pact Broker 吗?

已经安装了 docker、dius/pack_broker 和 Postgres(brew 安装)。

缺少以适当方式修复上述所有内容的要点以及将 JSON 协议发布到协议代理的适当脚本。

补充一点,我在消费者端使用 JVM 实现。并在提供者端进行简单的 gradle 验证。

0 投票
1 回答
465 浏览

ruby-on-rails - 在 Rails API 中针对测试环境运行 Pact

只是在我的 Rails API 上使用 Pact 并注意到开箱即用的 Pact 设置默认运行在“开发”环境中。

当我运行任务(RAILS_ENV=test)时,如何配置以针对“测试”环境运行而无需在命令行中指定它。无法在文档中轻松找到如何操作。

使用以下宝石:

pact_helper.rb:

谢谢,莫