问题标签 [pact-net]

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 投票
2 回答
2115 浏览

c# - 验证 PactNet 中的类型

我正在测试微服务,并且正在使用PactNet创建和验证协议。我发现测试太脆弱了,因为验证者正在检查确切的值而不是验证类型。

例如,我正在针对 GitHub API 进行测试,并且测试有效。如果添加了新的 Repo,则该public_repos值会增加 1,并且测试失败。

有人用它来检查类型而不是具体值吗?

这是验证码:

这是 PACT 文件。

0 投票
3 回答
1716 浏览

pact - 我应该测试合同中的所有枚举值吗?

我对是否应该考虑某种类型的测试功能或合同有疑问。

假设我有一个类似 /getToolType 的 API,它接受 {object" "myObject"} 作为输入,并以 {type: "[az]+"} 形式返回类型

客户端和服务器之间达成一致,返回的类型将匹配一组字符串,比如 [hammer|knife|screwdriver],因此消费者决定在枚举中解析它们,当返回的类型未知时使用备用值。

消费者是否应该为每种类型(锤子、刀子、螺丝刀)包括一个测试用例,以确保生产者仍然遵守始终返回的协议,例如,当使用锤子对象调用 /getToolType 时,小写字符串“锤子” ? 或者你会认为这样的测试用例是有用的吗?为什么?

0 投票
1 回答
3131 浏览

c# - C# PACT - 消费者驱动的接触测试 - 为提供者编写测试

我正在努力了解PACT,我正在使用PACT-Net库来实现这一点。

我对消费者的测试工作正常,但我正在尝试在提供者上设置测试。我正在使用在 Visual Studio 中使用 Web API 模板时加载的基本 Web API 项目——它创建了 Values API 控制器。我只是在测试 GetIEumerable<string>方法作为流程的端到端测试。我也在关注 PACT-Net github 站点上的示例。这是我到目前为止的测试:

每当我运行单元测试时,都会出现以下错误:

我想我的问题是,我是否需要实际测试对 /api/values 的 HTTP 调用,还是我遗漏了其他东西?

谢谢

0 投票
3 回答
1501 浏览

c# - PACT .NET 消费者测试:灵活长度数组

我正在使用 pactNet 来测试一个 API,它应该返回一个灵活长度的数组。

如果我调用“myApi/items/”,它应该返回消费者不知道确切大小的项目列表。所以答案应该是这样的:

或这个:

如何为此交互创建合同?

文档中是 Ruby 中的一个示例,但我在 C# 中找不到等价物。

我正在使用 pactNet 2.1.1 版。

编辑:这是一个示例,它应该是什么样子。我想知道的是如何声明正文应包含具有灵活长度的项目数组。

0 投票
1 回答
1853 浏览

testing - 我应该使用基于协议的存根服务还是 Wiremock.net?

我正在研究dotnetcore 世界中的微服务组件测试工具。

除了组件测试,我还计划使用 Pact.net进行合同测试。

在这里阅读Pact.net:https://github.com/pact-foundation/pact-net

我找到了指向: https ://github.com/seek-oss/seek.automation.stub 的链接, 它说它是一个基于 Pact 的 .NET 存根库。这很有意义,因为我将使用 Pact 并且我的 Pact 可用于存根。

但在此之前,我正在考虑 WireMock.net https://github.com/WireMock-Net/WireMock.Net。有没有人尝试过每一个并分享他们的反馈,我应该选择哪一个?与此 Seek Automation 存根相比,WireMock 在社区中似乎非常受欢迎。

提前感谢您的帮助!

0 投票
2 回答
543 浏览

c# - 使用 Pact.Net 和 .Net Core 设置 Provider 基本状态的最佳方法是什么?

在 Pact 的 (Ruby) 文档中,可以在提供者状态中添加提供者基本状态。我正在使用 Pact.Net 并使用 ProviderStateMiddleware,但我无法弄清楚如何使用此实现设置基本状态。是否有可能做到这一点和/或有没有人有任何设置的经验?提前致谢!

0 投票
2 回答
1684 浏览

pact - PactNet Provider 测试失败,因为运行测试时出现 404

我有一个消费者已经成功创建了一个契约文件:

问题是对提供者的测试。它得到一个 404

/CoolPersonService/persons/e674a2d0-57e6-471d-96dd-a91c0077283a

但是如果我使用 HTTP 客户端向该路由发送 GET,我会收到 200 响应并返回预期的数据。

这是测试运行的输出:

这是提供者的测试方法:

0 投票
1 回答
608 浏览

pact - 如何运行 PACT Broker can-i-deploy 脚本?

我已经下载了 zip 文件https://github.com/pact-foundation/pact_broker-client#can-i-deploy 并在我的 bash 中运行以下命令但我收到错误,我做错了什么

我的计划是从 C# 代码运行这个 can-i-deploy 但在此之前我正在运行 curl 但面临问题,感谢 在此处输入图像描述 示例脚本的任何帮助:

错误:卷曲:选项--参与者:未知

0 投票
1 回答
376 浏览

powershell - Start-Process:系统找不到从 TeamCity Build 步骤指定的文件,但在本地工作正常

我正在尝试运行 Pact 代理,我可以使用在本地运行良好的参数部署工具,但是当我在 TeamCity 中添加构建步骤时,它会抛出以下错误

Start-Process :此命令无法运行,因为错误:系统找不到指定的文件。 在此处输入图像描述

当我在本地运行相同的 powershell 脚本时,它工作正常。

PowerShell脚本: 在此处输入图像描述

CanIDeploy.bat 代码是 在此处输入图像描述

注意:我从 power shell 脚本调用 pact-broker.bat 的原因是,无法从 Teamcity 运行 bat 文件,这就是创建内部调用 pact broker bat 文件的 powershell 脚本的原因。任何帮助表示赞赏

0 投票
2 回答
1337 浏览

regex - 将同时检查正则表达式和空值的协定匹配器

我有以下带有以下交互的协议文件

有机会fixtureNumber可以为空。请让我知道一个匹配器,它既可以检查[0-9]{6}-[0-9]{2}-[a-zA-Z]{2}-[0-9]{2}-[0-9]{2}也可以检查空值。