0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

华纳云:使用 WireMock 在开发和测试中模拟 API 服务

jf_98250943 来源:jf_98250943 作者:jf_98250943 2024-10-25 16:46 次阅读

在本地开发和测试期间,经常会遇到您的应用依赖于远程 API 的情况。网络问题、速率限制,甚至 API 提供商的停机都可能阻碍您的进度。这会严重影响您的工作效率并使测试更具挑战性。这就是 WireMock 发挥作用的地方。

WireMock 是一个开源工具,可以帮助开发人员创建模拟真实 API 行为的模拟服务器,为开发和测试提供受控环境。

假设您有一个 API 和一个前端应用,并且想要测试前端如何与 API 交互。使用 WireMock,您可以设置一个模拟服务器来模拟 API 的响应,这样您就可以在不依赖实际 API 的情况下测试前端行为。当 API 仍在开发中或您想要在不影响实际 API 的情况下测试不同场景时,这会特别有用。WireMock 支持 HTTP 和 HTTPS 协议,可以模拟各种响应场景,包括延迟、错误和不同的 HTTP 状态代码。

在本指南中,您将学习如何:

使用 Docker 启动 WireMock 容器。
在本地开发中使用模拟数据,无需依赖外部 API
在生产中使用 Live API 从 AccuWeather 获取实时天气数据。

将 WireMock 与 Docker 结合使用

WireMock 的官方 Docker 镜像提供了一种部署和管理 WireMock 实例的便捷方式。WireMock 适用于各种 CPU 架构,包括 amd64、armv7 和 armv8,确保与不同设备和平台兼容。您可以在 WireMock 文档站点上了解有关 WireMock 独立版的更多信息

先决条件

遵循本操作指南需要满足以下先决条件:

Docker 桌面

启动 WireMock

使用以下步骤启动 WireMock 的快速演示:

在本地克隆 GitHub 存储库。

$ git clone https://github.com/dockersamples/wiremock-node-docker


导航到wiremock-endpoint目录

$ cd wiremock-node-docker/


WireMock 充当后端与之通信以检索数据的模拟 API。已在映射目录中为您创建了模拟 API 响应。

通过在克隆的项目目录的根目录下运行以下命令来启动 Compose 堆栈

$ docker compose up -d


片刻之后,应用程序将启动并运行。

您可以通过选择容器来检查日志wiremock-node-docker:

测试 Mock API。

$ curl http://localhost:8080/api/v1/getWeather?city=Bengaluru


它将返回带有模拟数据的以下预设响应:

{"city":"Bengaluru","temperature":27.1,"conditions":"Mostly cloudy","forecasts":[{"date":"2024-09-02T07:00:00+05:30","temperature":83,"conditions":"Partly sunny w/ t-storms"},{"date":"2024-09-03T07:00:00+05:30","temperature":83,"conditions":"Thunderstorms"},{"date":"2024-09-04T07:00:00+05:30","temperature":83,"conditions":"Intermittent clouds"},{"date":"2024-09-05T07:00:00+05:30","temperature":82,"conditions":"Dreary"},{"date":"2024-09-06T07:00:00+05:30","temperature":82,"conditions":"Dreary"}]}

使用 WireMock,您可以使用映射文件定义预设响应。对于此请求,模拟数据在 JSON 文件中定义 wiremock-endpoint/mappings/getWeather/getWeatherBengaluru.json。

有关存根预制响应的更多信息,请参阅 WireMock 文档。

在开发中使用 WireMock

现在您已经尝试了 WireMock,让我们在开发和测试中使用它。在此示例中,您将使用具有 Node.js 后端的示例应用程序。此应用程序堆栈具有以下配置:

本地开发环境:Node.js 后端和 WireMock 运行的环境。
Node.js Backend:代表处理 HTTP 请求的后端应用程序。
外部 AccuWeather API:获取实时天气数据的真实 API。
WireMock:测试期间模拟 API 响应的模拟服务器。它作为 Docker 容器运行。

展示 WireMock 开发中的架构图

在开发中,Node.js 后端向 WireMock 发送请求,而不是实际的 AccuWeather API。
在生产中,它直接连接到实时 AccuWeather API 获取真实数据。

在本地开发中使用模拟数据

让我们设置一个 Node 应用程序来向 WireMock 容器而不是实际的 AccuWeather API 发送请求。

先决条件

安装 Node.js 和 npm
确保 WireMock 容器已启动并正在运行(请参阅 启动 Wiremock

按照以下步骤设置非容器化的 Node 应用程序:

导航到accuweather-api目录

确保您位于package.json文件所在的目录中。

设置环境变量。

打开目录.env下的文件accuweather-api/。删除旧条目并确保它只包含以下一行。

API_ENDPOINT_BASE=http://localhost:8080

这将告诉你的 Node.js 应用程序使用 WireMock 服务器进行 API 调用。

检查应用程序入口点

该应用程序的主文件是index.js,位于accuweather-api/src/api目录中。
此文件启动getWeather.js模块,这对您的 Node.js 应用程序至关重要。它使用dotenv包从文件中加载环境变量.env。
根据 的值API_ENDPOINT_BASE,应用程序将请求路由到 WireMock 服务器 ( http://localhost:8080) 或 AccuWeather API。在此设置中,它使用 WireMock 服务器。
代码确保ACCUWEATHER_API_KEY仅当应用程序未使用 WireMock 时才需要,从而提高效率并避免错误。

启动 Node 服务器

在启动 Node 服务器之前,请通过运行确保已经安装了 package.json 文件中列出的节点包npm install。

npm install
npm run start


您应该看到以下输出:

> express-api-starter@1.2.0 start
> node src/index.js

API_ENDPOINT_BASE: http://localhost:8080
..
Listening: http://localhost:5001

输出表明您的 Node 应用程序已成功启动。保持此终端窗口打开。

测试模拟 API

打开一个新的终端窗口并运行以下命令来测试模拟的 API:

$ curl "http://localhost:5001/api/v1/getWeather?city=Bengaluru"


您应该看到以下输出:

{"city":"Bengaluru","temperature":27.1,"conditions":"Mostly cloudy","forecasts":[{"date":"2024-09-02T07:00:00+05:30","temperature":83,"conditions":"Partly sunny w/ t-storms"},{"date":"2024-09-03T07:00:00+05:30","temperature":83,"conditions":"Thunderstorms"},{"date":"2024-09-04T07:00:00+05:30","temperature":83,"conditions":"Intermittent clouds"},{"date":"2024-09-05T07:00:00+05:30","temperature":82,"conditions":"Dreary"},{"date":"2024-09-06T07:00:00+05:30","temperature":82,"conditions":"Dreary"}]}%

这表明你的 Node.js 应用程序现在已成功将请求路由到 WireMock 容器并接收模拟响应

您可能已经注意到,您正在尝试使用http://localhost:5001URL 而不是 port 8080。这是因为您的 Node.js 应用程序正在 port 上运行5001,并且它将请求路由到正在监听 port 的 WireMock 容器8080。

显示在 Docker Desktop 上运行的 WireMock 容器的日志的图表

显示在 Docker Desktop 上运行的 WireMock 容器的图表

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 测试
    +关注

    关注

    8

    文章

    5149

    浏览量

    126437
  • API
    API
    +关注

    关注

    2

    文章

    1483

    浏览量

    61796
  • 开发
    +关注

    关注

    0

    文章

    366

    浏览量

    40804
  • 前端
    +关注

    关注

    1

    文章

    190

    浏览量

    17721
收藏 人收藏

    评论

    相关推荐

    HarmonyOS NEXT应用元服务开发Intents Kit(意图框架服务)事件推荐开发测试

    意图框架向开发者提供真机测试能力,即开发者可连接设备进行调测。开发者完成代码开发之后,功能正式上架应用市场前,可以
    发表于 11-18 17:39

    鸿蒙原生开发手记:01-元服务开发

    限制 需要注意的时,部分 API 服务无法使用, HarmonOS 文档里面,打开 API
    发表于 11-14 17:28

    api驱动的服务是什么意思?

    API驱动的服务是指利用API技术来驱动和提供服务的模式。在这种模式下,
    的头像 发表于 11-14 10:06 106次阅读

    HarmonyOS NEXT应用元服务开发Intents Kit(意图框架服务)上架配置指导

    击“确定”,若没有找到对应意图可联系华为工程师,检查是否未配置该意图。 添加完成后,需录入接口信息配置,具体信息如下: API:即开发者的URL地址信息,供华为侧服务器进行侧意图调用
    发表于 11-12 16:44

    华纳:如何使用 Netperf 进行网络性能测试

    要使用Netperf进行网络性能测试,您需要按照以下步骤操作:  1. 安装Netperf 首先,您需要在客户端和服务器端安装Netperf。可以通过以下命令安装: ```bash wget -c
    的头像 发表于 10-16 16:09 339次阅读
    <b class='flag-5'>华纳</b><b class='flag-5'>云</b>:如何使用 Netperf 进行网络性能<b class='flag-5'>测试</b>?

    使用API Post测试阿里物联网平台动态注册

    使用API Post测试阿里物联网平台动态注册
    的头像 发表于 10-05 19:08 195次阅读
    使用<b class='flag-5'>API</b> Post<b class='flag-5'>测试</b>阿里<b class='flag-5'>云</b>物联网平台动态注册

    开发者空间实践指导:基于 3 大 PaaS 主流服务轻松实现文字转换语音

    【摘要】 基于 CodeArts API 设计语音合成接口,基于 API Explorer 调试接口,并利用 CodeArts IDE 实现数据流转换为音频 案例简介 开发者将在主机
    的头像 发表于 09-13 16:25 418次阅读
    <b class='flag-5'>开发</b>者空间实践指导:基于 3 大 PaaS 主流<b class='flag-5'>服务</b>轻松实现文字转换语音

    恒讯科技分析:使用显卡服务器进行游戏开发有哪些优势和劣势?

    使用显卡服务器进行游戏开发具有一系列的优势和劣势: 一、优势: 1、高性能计算:显卡服务器基于GPU的架构提供了强大的并行处理能力,这对
    的头像 发表于 09-04 13:20 302次阅读

    如何理解计算?

    计算的工作原理是什么? 计算和传统IT技术的区别? 华纳如何帮助您实现计算? 什么是
    发表于 08-16 17:02

    重塑服务,华为 Flexus X 实例破解服务传统难题

    服务的局限性也逐步显现,成为阻碍企业发展的障碍。华为深刻洞察中小企业和开发服务应用
    的头像 发表于 08-12 09:54 545次阅读
    重塑<b class='flag-5'>云</b><b class='flag-5'>服务</b>,华为<b class='flag-5'>云</b> Flexus X 实例破解<b class='flag-5'>云</b><b class='flag-5'>服务</b>传统难题

    华纳:了解美国轻量服务器的成本效益优势

    在当前竞争激烈的商业环境,企业需要寻求更具成本效益的IT基础设施解决方案。美国轻量服务器作为一种新兴的计算技术,正逐渐成为企业的首选。本文将深入探讨其
    的头像 发表于 08-07 15:37 215次阅读

    华为发布 CodeArts API,为 API 护航

    4 月 10 日,华为正式发布 API 全生命周期管理一体化协作平台 CodeArts API,支持开发者高效实现 API 设计、
    的头像 发表于 05-09 23:17 486次阅读
    华为<b class='flag-5'>云</b>发布 CodeArts <b class='flag-5'>API</b>,为 <b class='flag-5'>API</b> 护航

    OpenAI API Key获取与充值教程:助开发者解锁GPT-4.0 API

    人工智能的浪潮,OpenAI 的 GPT-4.0 模型以其卓越的语言理解和生成能力引领了技术的新高潮。为开发者提供了强大的工具来创建更智能、更互动的应用。本文将详细介绍如何获取并充值
    的头像 发表于 04-28 16:35 9937次阅读
    OpenAI <b class='flag-5'>API</b> Key获取与充值教程:助<b class='flag-5'>开发</b>者解锁GPT-4.0 <b class='flag-5'>API</b>

    HarmonyOS应用性能与功耗测试

    ,进入到控制台。 选择或者创建一个项目,如果新创建一个项目,注意选择 HarmonyOS。 进入项目空间,左侧导航栏中选择 测试服务 > HarmonyOS
    发表于 12-26 16:39

    HarmonyOS应用兼容稳定性测试

    ,使用华为开发者帐号进行登录。 点击界面上的“从这里开始”按钮,进入到控制台。 选择或者创建一个项目,如果新创建一个项目,注意选择 HarmonyOS。 进入项目空间,左侧导航栏中选择 测试
    发表于 12-25 10:56