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

pact - Provider 中的 PACT Consumer Driven setUP 测试数据

我正在执行一些测试,如果消费者设置了一些 ID 或提供者数据库中不存在的任何文本,那么我想在提供者测试中执行以下步骤

  • 接收 PACT 文件,其中包含需要首先设置的信息
  • 然后我将拥有我的功能,它将开始将那些不可用的数据插入数据库
  • 然后对 进行 API 调用,这将提供实际响应。

现在我想知道,消费者应该使用哪个字段让提供者知道,在实际 API 调用之前需要一些先决条件或预先设置。

我看到了示例,其中有一个 setUp : InsertIntoDatabase 但没有说明如何找到消费者提供的输入。

0 投票
1 回答
701 浏览

xml - 如何使用 Pact 验证 XML 响应

我正在使用 Pact 框架来测试来自 API 的响应。响应采用 XML 格式。下面显示的是我的协议文件中的响应示例。

虽然这可行,但当 XML 响应很大时,很难将其全部包含在“body”JSON 键中。Pact 框架是否支持 XML 响应,就像它支持 JSON 一样?如果您能建议一种更合适的方法来使用 Pact 验证 XML 响应,我将不胜感激

0 投票
1 回答
729 浏览

javascript - 为多个响应集测试相同的 API

我们一直在尝试测试从一个微服务(比如 GET /contacts)公开的 API,该微服务正在被另一个微服务使用。

为了避免集成测试,我们创建了消费者驱动的契约测试,消费者微服务在其中创建契约并将它们发布到代理,生产者将从那里单独验证契约。

我们已经使用Pact IO来实现这一点,到目前为止它已经相当不错了。

现在我们在尝试进行详尽的测试时遇到了一些问题,我们想看看如何从 GET /contacts 返回一个空列表。

问题是:在添加交互时,我们可以使用提供者状态,但是我们找不到一种方法来区分编写测试以从 GET /contacts 获取联系人列表和在另一个测试中获取空列表。

这就是我们在消费者微服务中创建契约测试的方式:

我们无法在测试中找到区分这些交互的方法!:(

任何帮助,将不胜感激!

谢谢。

0 投票
0 回答
101 浏览

pact - 在 PactBroker 中,我如何查看“Webhooks”列 - 新 PactBroker 版本

我使用 docker 设置了我的协议代理,但我发现那里没有 Webhooks 列。我怎样才能得到专栏。我使用了从 dius/pact-broker 提取的最新图像。

0 投票
1 回答
93 浏览

spring - pact-jvm-provider-spring-mvc json4s 异常

只是想了解协议。我们使用的是 spring boot,所以我很自然地尝试使用 pact-jvm-provider-spring-mvc 进行简单设置。我的协议文件很简单 { "consumer": { "name": "MyConsumer" }, "provider": { "name": "MyProvider" }, "interactions": [ { "description": "a request for projects", "providerState": "i have a list of projects", "request": { "method": "GET", "path": "/dogs", "headers": { "Accept": "application/json" } }, "response": { "status": 200, "headers": { "Content-Type": "application/json" }, "body": [ { "dog": "1" } ] } } ], "metadata": { "pactSpecification": { "version": "2.0.0" } } } ,我将这些依赖项添加到我的 gradle 构建中:

```

testCompile 组:'com.reagroup',名称:'pact-jvm-provider-spring-mvc_2.10',版本:'0.4.0' testCompile 组:'au.com.dius',名称:'pact-jvm- provider_2.10',版本:'2.4.18' testCompile 组:'au.com.dius',名称:'pact-jvm-provider-junit_2.11',版本:'3.4.1'```

测试类并没有做太多的事情,只是以 spring 的方式创建了一个控制器。

但我从运行中得到的是

```

org.json4s.package$MappingException:不支持在函数体中定义的案例类。

```

这似乎是已解决的底层 jar 文件中的错误。但我只是想知道这是否是正确的方法,我可以简单地为 json4s 增加 jar 版本吗?pact-jvm-provider-spring-mvc有一阵子没动过,0.5.0 版本也没出过。再次注意,我不需要 spring-mvc。我只想针对我的 rest api 测试 Pact。我认为可能有另一种方法可以做到这一点。

0 投票
3 回答
1732 浏览

pact - Pact 中的 Spring 模拟测试

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

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

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

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

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

0 投票
1 回答
731 浏览

pact - 在契约契约之外或从契约契约生成 json 模式

在我的客户端代码中,我使用 json 模式来验证 json 响应(使用ajv)。我计划使用pact-js生成协议以针对提供者运行以进行合同测试。

我希望我的客户端代码在运行时验证期间使用的模式以及合同测试在协议验证期间使用的模式有一个单一的事实来源。有没有办法从 pact 文件生成 json(或 swagger)模式,或者是否有一个库使用 pact 文件本身对单个 http 响应进行运行时验证(而不是仅用于合同测试中的合同验证) ?

我意识到这是一个先有鸡还是先有蛋的问题,因为我需要首先运行客户端代码作为测试运行的一部分以生成协议(进而生成 json 模式),所以我必须找出一个好的为此的工作流程。

我也意识到契约测试应该减少对运行时验证的需求,但契约测试仍然不够全面,无法捕捉所有现实世界的场景。

0 投票
1 回答
7872 浏览

java - kafka涉及微服务架构时如何实现合约测试?

我目前正在从事一个项目,我们在微服务架构中实现了 kafka。您是否成功地使用 pact-jvm 为 mS 到 kafka 主题交互创建了合同测试用例?

我的实现是微服务 1 将消息发布到 REST 客户端,然后将消息发布到 Kafka 主题。microservice2 使用 GET 方法从 Kafka 主题中检索消息。

0 投票
1 回答
392 浏览

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

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

我的 POM 文件:

我的契约测试文件:

0 投票
2 回答
533 浏览

java - 与 Jersey 错误处理协议

我创建了这个很棒的控制器点:

此代码使用 Lamda 来处理错误流:

为此,我创建了一些 Pact 测试,所有 Pact 都可以工作,除非我们模拟我们调用的服务抛出的错误。

契约测试类的一个例子:

现在我从 Pact 那里得到了一些磨损的错误,我认为这不是问题,而是女孩如何在 Pact 中工作。因为我收到以下错误:

失败:

0) 通过短名称获取组织返回一个响应,其中包括标头“Content-Type”,值为“application/json” 预期标头“Content-Type”的值为“application/json”,但为“text/html;charset=ISO” -8859-1'

1) 通过短名称获取组织返回具有匹配正文比较的响应 -> 预期响应类型为“application/json”,但实际类型为“text/html”

现在,如果我设置(注释掉的属性)RESPONSE_SET_STATUS_OVER_SEND_ERROR

然后协议像这样失败:

失败:

我觉得 grizly 不喜欢我为错误处理而制作的 Lamda。但我不想更改我的代码,以便我可以让我的提供者因为他的服务器容器而工作。我一直在尝试调试代码的任何想法,并且它会正确流动,直到将其移交给容器。然后它似乎完全忽略了 Jersy 注释