问题标签 [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.
pact - AMQ 消息 V3.0 合约中的 stringType 匹配器进行文字匹配而不是类型匹配
我有一个使用 stringType 来匹配文件名的合同。合同还指定了类型的匹配器,但是当我在提供者端运行测试时,它会进行文字匹配。我已经包含了合同、发送的 JSON 和调试时的屏幕截图。我注意到在 MatchingRuleGroup 中初始化了一个 TypeMatcher,但它没有字段。我不确定这是否正确
我尝试了 3 个场景:
stringValue("bestandsid","20190219_foo_20190124.txt") --> 这行得通
stringType("bestandsid","20190101_foo_20190124.txt") --> 不起作用,因为它实际上期望 20190101_foo_20190124.txt 但得到 20190219_foo_20190124.txt
stringType("bestandsid") --> 不起作用。它实际上期望“字符串”,但得到了 20190219_foo_20190124.txt
在我使用的提供商处
pact-jvm-provider-spring_2.12 - 版本 3.6.2
在我使用的消费者
pact-jvm-consumer-junit_2.12 - 版本 3.6.2
pact-jvm-consumer-java8_2.12 - 版本 3.6.2
合同:
实际事件
消费者合同
错误:
我希望 stringType 与 String 类型匹配。
pact - Pact Dsl - 提供者返回的记录多于 pact 文件中的记录
我有以下课程: -
在消费者方面,我有 LamdaDsl 如下:
所以在生成的契约文件中,我将只有一个学生记录。
现在,在 Provider 端,id 为“1”,它将给出两个学生记录,示例代码如下:-
现在,当我运行协议验证程序时,它会失败,因为它说提供者响应中有 2 个学生记录。
我需要在 DSL 中进行哪些更改,以便它不会在响应中查找实际记录数?
pact - 提供者验证时如何输入@TestTarget 点?
我是协议的新学习者,我想知道在为提供者验证
进行提供者验证时应该输入什么我应该将提供的目标仅填充为 localhost 或代替 localhost 我也可以输入实际的 env 主机?哪种场景最适合合约测试?
pact-jvm - 无法发布到 Pack-Broker:重复键值违规
当版本和标签保持不变但协议的内容在(重新)发布试验之间发生变化时,我们现在面临一个问题。
最近我们的 CICD 开始使用一个全新的协议代理服务器,它取代了旧的。旧代理图像来自 dius/pact-broker 新代理图像来自 pactfoundation/pact-broker(最新)
要发布协议,我们使用“pact:publish”maven 插件命令
场景:(试验之间projectVersion和tag的值是一样的)
- 第一次发布协议时,一切正常(返回 201)
- 重新发布时,虽然协议内容保持不变,但返回 ok (200),因为协议中没有任何更改
- 当重新发布,但协议内容发生变化时,返回错误 500,表示一个或多个协议文件被代理拒绝。
在 pact broker 日志上,错误显示如下:
2019-09-18 08:38:50.512340 E [9:puma 001 delegate.rb:83] root -- PG::UniqueViolation: 错误:重复键值违反唯一约束“unq_latest_ppid_prov_conver”详细信息:键(provider_id,consumer_version_id)= (15, 39) 已经存在。: INSERT INTO "latest_pact_publication_ids_for_consumer_versions" ("consumer_version_id", "provider_id", "pact_publication_id", "consumer_id", "pact_version_id") VALUES (39, 15, 71, 16, 48) RETURNING NULL 2019 -09-18 08:38:50.513334 E [9:puma 001 logging.rb:37] root -- 错误参考 YouFegbNWY - Sequel::UniqueConstraintViolation PG::UniqueViolation: 错误:重复键值违反唯一约束“unq_latest_ppid_prov_conver”详细信息:键 (provider_id, consumer_version_id)=(15, 39) 已经存在。
我希望契约经纪人允许我用新的内容替换相同版本和标签的现有契约内容(据我所知——这在“旧”契约经纪人中工作得很好)
pact - 使用 pact-jvm 将带有标签的验证结果发布回 pact Broker
pact-jvm可以将结果发布回 pact 代理。但是,我似乎找不到使用标签发布的选项或方法,例如在 pact broker 的示例中:
spring-test - 使用 spring 和 pact 进行 CDC 测试时出现“没有找到匹配方法的测试”错误
我使用 pact 和 spring 进行 CDC 提供程序测试,我能够生成 pact 文件,但是当我使用 pact json 进行提供程序测试时,它出现以下错误:“没有找到匹配方法 runTest 的测试”,这是我的代码:
协议文件是这样的:
似乎我的测试找不到“my_state”?
编辑:这是我的演示项目,请帮忙看看,谢谢! https://github.com/wuhuanxing/pact_demo
pact - 按端点分离提供者验证测试中的 Pact 交互
我刚刚开始对我的系统采用 Pact 测试,该系统由一个提供者服务和一个作为消费者的 Angular 前端组成。我成功地设置了双方,因此,Angular 应用程序生成了一个(单个)协议文件,其中包含与我的提供程序服务的多个端点的许多交互。在提供者中,我现在确实面临验证测试变得非常大且过于复杂的问题,因为我必须在一个测试中使用它们的所有数据模拟所有端点,例如:
有没有办法将交互与协议文件分开,以便我可以在我的提供程序中进行多个小型验证测试?例如,我想对路径以“/example”开头的所有请求进行验证测试,并对以“/other”开头的路径进行第二次测试。
所以我更喜欢像这样更小、更集中的验证测试:
还是我的想法有谬误?谢谢。
pact - 运行测试时忽略 PACT jvm 匹配规则
我正在使用 PACT JVM https://github.com/DiUS/pact-jvm/tree/master/provider/pact-jvm-provider-junit 我不知道为什么我的联系人中的匹配规则被忽略了。我的 HTTP 测试
还有我的合同文件
并在运行后显示错误
我试图更改正则表达式,但问题仍然存在。只有当消息数据正确时才正确。
请帮忙给我的观点不正确。
谢谢,
pact-jvm - 如何更新 pact jvm requestFilter 中的传入请求?
我在 java 中有一个 spring boot API,它使用 pact-jvm 进行协议验证。我们有一个新客户端,他想使用新路径使用相同的 API,网关将负责处理,但这会导致协议出现问题,我想拦截请求并修改新协议的请求路径以指向到老路。我试图在网上参考一些材料,发现: https ://medium.com/dazn-tech/pact-contract-testing-dealing-with-authentication-on-the-provider-51fd46fdaa78
下面的代码打印请求的更新值,但协议仍然失败并出现 404 错误,就好像它仍在使用新路径一样
java - 用于集合映射的 JVM Pact Dsl 主体
我将使用 pact dsl 将集合地图建模为我的提供者的响应,但我不知道如何。如果有人可以帮助我,我将不胜感激。