问题标签 [pact-node]

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

node.js - 协议以代码 1 退出

我正在尝试使用Pact库执行一些测试,但遇到了一些错误。下面是测试配置:

这是我的package.json文件内容,以及我安装的所有依赖项:

这是我得到的错误: 在此处输入图像描述

基本上,现在我根本不介意测试是否良好。现在的主要问题是协议模拟服务器没有启动。

这里奇怪的是我还有其他项目可以正常运行协议测试。我已经将我想要测试的服务从失败的项目移到了可以正常执行这些测试的服务,并且它正在工作(至少启动了协议模拟服务器)。这个其他项目中的依赖项与有问题的项目几乎相同:

这种情况是怎么回事?

编辑:我已经用标志 启动了pact测试,这是生成的日志:DEBUG在此处输入图像描述 在此处输入图像描述

0 投票
1 回答
288 浏览

node.js - Pact.js - willRespondWith 任意有序数组

我的消费者服务向提供者服务询问所有用户的列表,但提供者以任意有序列表回答(这很好)。消费者端的协议执行看起来不错,但是在提供者站点上执行它时,它说:Expected "user1" but got "user3" at $.items[0].userName例如。

这是交互的片段:

有没有办法忽略退货的顺序?

此外,我的摩卡咖啡测试似乎对比较没有影响。我也尝试订购两个阵列,但没有任何帮助。(交互和摩卡测试)如何连接?

提前谢谢了!

0 投票
1 回答
591 浏览

node.js - Can I make Chai's expect.to.not.throw synchronous?

I have a snippet of code that I'm testing in Chai and Pact. It looks something like this:

This works but it's a lot of extra work to go through to make a wrapper function to ensure that I wait on Pact's verify complete's before continuing on with the test. Pact has some internal state that will clear when it's done. If I just call this:

expect(provider.verify()).to.not.throw()

then it will conflict with other tests.

This code seems to work fine for me but it's very messy. Its there a simpler way to accomplish this?

0 投票
1 回答
522 浏览

javascript - Pact JS (Jest) Pact 停止失败;尝试调用服务 10 次没有结果

我在消费者端的 Pact JS 实现中遇到错误。当我尝试运行测试时,出现以下错误:

如果有任何帮助,请在下面附上我的代码片段:

在测试本身:

任何帮助将不胜感激。我是新手,不知道如何解决这个问题。

使用 pact: 4.2.1 和 @pact-foundation/pact-node: 6.0.0

0 投票
1 回答
209 浏览

pact - Pact-node 依赖关系很大,有什么办法可以减小大小?

我们已经使用 pact 为我们的 Angular JS 前端和 java 后端实现了合同测试。

我注意到 node_modules/@pact-foundation 目录非常大(pact-node v 4.3.2)

JS UI 始终只是消费者,但依赖项似乎需要以下内容

有没有办法引入一组较小的依赖项?

编辑 - 似乎原因如下

pact-node 依赖于 pact-mock-service 并且捆绑的依赖项包括所有操作系统的模拟服务。

编辑 2 -

将我的依赖项更改为以下

并添加一个分辨率(我使用的是纱线而不是 npm)

将依赖项的总大小降低到

干杯谢恩

0 投票
0 回答
243 浏览

javascript - pact-js 发布纯文本正文显示“模拟服务中发生错误:JSON::ParserError - 757: 'Tag_PACT_1519821131303' 处的意外令牌

  1. 操作系统:例如 Mac OSX 10.12.6
  2. 消费者 Pact 库:例如 Pact JS v5.5.0
  3. 节点版本:8.2.1

有一个 post restful api,post body 是纯文本,当我使用下面的代码生成消费者 pact 文件时,它显示 JSON ParserError,似乎 pact-js 只支持 json body,即使我将 content-type 设置为 text /plain 在标题中

有什么方法可以在 post 方法中发送文本/纯文本?

0 投票
1 回答
219 浏览

node.js - pact-js 消息消费者合同示例不起作用

我想开始使用 Pact 为我们的异步消息流架构启用消费者驱动的合同。在阅读了 pact-foundation 的大部分文档和入门指南后,我尝试按照https://github.com/pact-foundation/pact-js/tree/master/examples/messages中的示例进行操作。现在我只需要创建 Pact 的消费者端。

当我跑

我在级别收到以下错误debug

然后我将其追踪到 .verify(synchronousBodyHandler(dogApiHandler)) inside的调用message-consumer.spec.ts,最终导致了class Spawn存在于spawn.tspact-foundation 的 pact-node 存储库中的那个。

为了正确调用 Pact Creation 逻辑的示例,我必须更改 package.json 文件:

我的想法不多了,因为我的 javascript/node.js/typescript 技能相当有限。将不胜感激任何帮助。谢谢和干杯,pypapo

0 投票
2 回答
423 浏览

node.js - 在协议提供者测试中指定自签名证书

我目前正在使用以下提供商选项测试我的协议合同

当我给出基本网址时,https我收到以下错误:

如果我更改 urlhttp:让它进行重定向(我得到重定向状态代码 308)。

https url 是一个自签名的 url,自签名证书存在于我们所有的服务器中。我从任何浏览器或 curl 或通过 express.js 访问 url 都没有问题。

但是,如果我直接在提供程序选项中提供 url,我会收到错误消息。我浏览了协议文档,但找不到任何其他论据。

非常感谢您为克服此问题提供的任何帮助。

谢谢。

更新:问题是在 docker 容器内运行协议。来自容器的请求被内部代理阻止。一旦代理被绕过,它就起作用了。

0 投票
0 回答
85 浏览

pact - PACT 节点 - ConsumerVersionSelector - 参与者和版本未兑现

  • 操作系统:Mac OSX 10.15.7_
  • 契约:9.15.5
  • 契约节点版本:10.12.2
  • 节点版本:12.13.0

我确定我做错了什么,但我不知道如何让它工作。

我有 2 个客户 (ClientAClientB) 与 provider 有合同(每个都标记为“master”)发布到协议代理(版本 2.79.1)DemoService

契约经纪人矩阵(简化):

消费者 版本 标签 提供者 版本 已验证
客户A 1.0.1-2726fe4 掌握 - 演示服务 1.0.0-a6b2678
客户A 1.0.0-12ab763 掌握 - 演示服务 1.0.0-a6b2678
客户B 1.0.1-6fe3cb5 掌握 - 演示服务 1.0.0-a6b2678
客户B 1.0.0-ec71b62 掌握 - 演示服务 1.0.0-a6b2678

我尝试设置一个来验证与提供商ConsumerVersionSelector签订的合同的特定版本。ClientA

它看起来像versionpacticipant没有兑现。两个消费者的合同都是从契约经纪人那里提取的。日志有以下语句:

谢谢你的评论。

0 投票
1 回答
28 浏览

pact - Pact 中的 ProviderStates

据我所知,Pact 规范的第 3 版表示交互支持多个 providerState,并允许您定义参数。我在 pact-web 或 pact-js 存储库中不支持此功能。我正在使用 pact-web 并将其集成到现有的 Angular 项目中。我最终通过创建一个新的交互类来添加 providerStates,该类扩展了库中定义的类。通过应用程序进行调试,我看到它已序列化并发布到模拟服务。

但是,我没有看到 providerStates 属性保存到协议文件中。我只看到providerState。我正在尝试通过 pact-node 项目进行调试,但找不到文件实际写入磁盘的位置。有什么建议吗?