目录
问题内容
解决方法
首页 后端开发 Golang application-go + BDD-java 中模拟第三方服务

application-go + BDD-java 中模拟第三方服务

Feb 11, 2024 pm 01:39 PM

application-go + BDD-java 中模拟第三方服务

php小编子墨今天要为大家介绍的是application-go + BDD-java中模拟第三方服务的方法。在软件开发过程中,我们经常需要与第三方服务进行交互,但在测试阶段,我们可能无法直接访问这些服务。为了解决这个问题,我们可以使用application-go和BDD-java来模拟第三方服务的行为,从而进行更有效的测试。下面,让我们一起来了解一下具体的实现方法吧!

问题内容

我最近开始研究 BDD(使用 Gherkin + Restassured)。需要模拟第三方servicd,下面是我的用例。

  1. 服务 A 在内部调用服务 B
  2. 该应用程序位于 goLang 中。
  3. BDD 采用 Java 语言。

我们有一个 CI 管道在运行,它生成 rpm 并将 rpm 部署到虚拟机中。 在该 VM 上,我们运行 BDD(当前 Service-A 和 Service-B 部署在同一 VM 上)

有没有办法可以模拟 Service-B,这样我就不必依赖 Service-B?如果是的话,这里最好的方法是什么。

尝试过 goLang httptest 在单元测试级别模拟服务。 但是在使用 BDD 在管道中创建 rpm 后如何进行模拟。

谢谢

解决方法

如果您的服务 A 在内部调用服务 B,而不是通过 Web 或 RPC,那么您可以使用依赖项注入来注入服务 B 的“假”版本。(请注意,这不一定涉及依赖项注入框架;基于构造函数和基于属性的注入也是有效的)。如果服务B没有接口,则提取一个并使用瘦适配器根据环境调用真实服务或假服务。

只要场景仅与服务 A 的用户界面或 API 交互,您就不需要更改场景。

您将需要更改构建管道的工作方式,以便它使用您的假代码而不是真实代码进行部署。

您甚至可以在运行时执行此操作,通过让适配器调用相关服务来从假的切换到真实的东西。切换或部署可以由环境变量或构建参数触发。

但请小心,不要将测试服务部署到生产环境!

如果您使用持续部署,那么理想情况下,构建管道中的最后一步应该部署并测试与实际服务的交互。如果由于某种原因这是您唯一的工作方式,您仍然可以做一些可能有帮助的事情:

  • 您可以存根服务 B 使用的数据,以便其以可预测的方式运行

  • 您可以使用测试实例。请联系您的服务提供商,看看他们是否有适合您的服务。我建议您仍然应该检查实际服务的部署是否成功,最好使用某种自动化测试,即使必须在生产中运行。只需进行基本的冒烟测试即可检查系统是否已连接。请注意,部署越容易,就越容易从错误中恢复;如果您不能快速部署,那么您将需要更彻底的检查。

如果 RPM 是在没有任何类型的伪造或测试实例的情况下创建和部署的,并且您无法配置环境以使用此类伪造或测试实例,那么您将无法模拟它。构建管道必须是部署伪造的一部分。如果您可以控制 CI 管道,那么这不会是问题;否则请联系您的构建团队。他们可能有经验或能够向您推荐可以帮助您的其他人。毕竟,伟大的 BDD 是由对话驱动的!

以上是application-go + BDD-java 中模拟第三方服务的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1677
14
CakePHP 教程
1431
52
Laravel 教程
1334
25
PHP教程
1280
29
C# 教程
1257
24
Golang vs. Python:性能和可伸缩性 Golang vs. Python:性能和可伸缩性 Apr 19, 2025 am 12:18 AM

Golang在性能和可扩展性方面优于Python。1)Golang的编译型特性和高效并发模型使其在高并发场景下表现出色。2)Python作为解释型语言,执行速度较慢,但通过工具如Cython可优化性能。

Golang和C:并发与原始速度 Golang和C:并发与原始速度 Apr 21, 2025 am 12:16 AM

Golang在并发性上优于C ,而C 在原始速度上优于Golang。1)Golang通过goroutine和channel实现高效并发,适合处理大量并发任务。2)C 通过编译器优化和标准库,提供接近硬件的高性能,适合需要极致优化的应用。

开始GO:初学者指南 开始GO:初学者指南 Apr 26, 2025 am 12:21 AM

goisidealforbeginnersandsubableforforcloudnetworkservicesduetoitssimplicity,效率和concurrencyFeatures.1)installgromtheofficialwebsitealwebsiteandverifywith'.2)

Golang vs.C:性能和速度比较 Golang vs.C:性能和速度比较 Apr 21, 2025 am 12:13 AM

Golang适合快速开发和并发场景,C 适用于需要极致性能和低级控制的场景。1)Golang通过垃圾回收和并发机制提升性能,适合高并发Web服务开发。2)C 通过手动内存管理和编译器优化达到极致性能,适用于嵌入式系统开发。

Golang vs. Python:主要差异和相似之处 Golang vs. Python:主要差异和相似之处 Apr 17, 2025 am 12:15 AM

Golang和Python各有优势:Golang适合高性能和并发编程,Python适用于数据科学和Web开发。 Golang以其并发模型和高效性能着称,Python则以简洁语法和丰富库生态系统着称。

Golang和C:性能的权衡 Golang和C:性能的权衡 Apr 17, 2025 am 12:18 AM

Golang和C 在性能上的差异主要体现在内存管理、编译优化和运行时效率等方面。1)Golang的垃圾回收机制方便但可能影响性能,2)C 的手动内存管理和编译器优化在递归计算中表现更为高效。

表演竞赛:Golang vs.C 表演竞赛:Golang vs.C Apr 16, 2025 am 12:07 AM

Golang和C 在性能竞赛中的表现各有优势:1)Golang适合高并发和快速开发,2)C 提供更高性能和细粒度控制。选择应基于项目需求和团队技术栈。

Golang vs. Python:利弊 Golang vs. Python:利弊 Apr 21, 2025 am 12:17 AM

Golangisidealforbuildingscalablesystemsduetoitsefficiencyandconcurrency,whilePythonexcelsinquickscriptinganddataanalysisduetoitssimplicityandvastecosystem.Golang'sdesignencouragesclean,readablecodeanditsgoroutinesenableefficientconcurrentoperations,t

See all articles