Nswag 生成的客户端的 Pact 合约测试

问题描述 投票:0回答:1

我正在研究使用 PACT 进行合约测试,并且发现了很多示例,其中一个服务(消费者)通过 HTTP(s) 调用通过网络调用另一个服务(提供者)。

但是,在我当前的项目(.Net 6 应用程序)中,提供程序还使用 Nswag 生成客户端,并且这些客户端以 Nuget 包的形式发布。然后,这些包将用作消费者服务中的依赖项。消费者代码调用客户端(服务通过 DI 注册),并在内部通过 HTTP 调用提供者服务。

那么,在这种情况下,进行合约测试有意义吗? 如果是,是否应该测试客户端或将其视为消费者,因为客户端控制返回给消费者的数据?如果客户端和提供者服务达成了成功的协议,那么提供者和消费者也应该工作。这也是有道理的,因为一个公共客户端可以由多个消费者使用,这使得维护合同测试用例变得更容易。 最后,是否有任何示例可供我参考,以将客户端用作 NuGet 包来进行基于客户端的合同测试?

提前致谢。

c# asp.net pact nswag
1个回答
0
投票

共享 SDK 的一个挑战是调用者可能不知道他们正在调用的端点(或某些元素的格式),这可能会使模拟 API 变得很麻烦。另一个关键技巧是允许消费者覆盖端点(在测试中,它需要转到 Pact 模拟而不是实时服务)。

一种可能性是与您的客户必须发布的 SDK 一起发布合同 - 这有一些缺点(失去对现场级别使用情况的可见性)。也许消费者甚至可以将合同缩减到它需要的场景。

我在这里讨论测试客户端 SDK 可能有用的原因:https://pactflow.io/blog/should-i-write-contract-tests-for-client-sdks/

© www.soinside.com 2019 - 2024. All rights reserved.