0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

華納云:使用 WireMock 在開發(fā)和測試中模擬 API 服務(wù)

jf_98250943 ? 來源:jf_98250943 ? 作者:jf_98250943 ? 2024-10-25 16:46 ? 次閱讀

在本地開發(fā)和測試期間,經(jīng)常會遇到您的應(yīng)用依賴于遠程 API 的情況。網(wǎng)絡(luò)問題、速率限制,甚至 API 提供商的停機都可能阻礙您的進度。這會嚴重影響您的工作效率并使測試更具挑戰(zhàn)性。這就是 WireMock 發(fā)揮作用的地方。

WireMock 是一個開源工具,可以幫助開發(fā)人員創(chuàng)建模擬真實 API 行為的模擬服務(wù)器,為開發(fā)和測試提供受控環(huán)境。

假設(shè)您有一個 API 和一個前端應(yīng)用,并且想要測試前端如何與 API 交互。使用 WireMock,您可以設(shè)置一個模擬服務(wù)器來模擬 API 的響應(yīng),這樣您就可以在不依賴實際 API 的情況下測試前端行為。當(dāng) API 仍在開發(fā)中或您想要在不影響實際 API 的情況下測試不同場景時,這會特別有用。WireMock 支持 HTTP 和 HTTPS 協(xié)議,可以模擬各種響應(yīng)場景,包括延遲、錯誤和不同的 HTTP 狀態(tài)代碼。

在本指南中,您將學(xué)習(xí)如何:

使用 Docker 啟動 WireMock 容器。
在本地開發(fā)中使用模擬數(shù)據(jù),無需依賴外部 API
在生產(chǎn)中使用 Live API 從 AccuWeather 獲取實時天氣數(shù)據(jù)。

將 WireMock 與 Docker 結(jié)合使用

WireMock 的官方 Docker 鏡像提供了一種部署和管理 WireMock 實例的便捷方式。WireMock 適用于各種 CPU 架構(gòu),包括 amd64、armv7 和 armv8,確保與不同設(shè)備和平臺兼容。您可以在 WireMock 文檔站點上了解有關(guān) WireMock 獨立版的更多信息

先決條件

遵循本操作指南需要滿足以下先決條件:

Docker 桌面

啟動 WireMock

使用以下步驟啟動 WireMock 的快速演示:

在本地克隆 GitHub 存儲庫。

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


導(dǎo)航到wiremock-endpoint目錄

$ cd wiremock-node-docker/


WireMock 充當(dāng)后端與之通信以檢索數(shù)據(jù)的模擬 API。已在映射目錄中為您創(chuàng)建了模擬 API 響應(yīng)。

通過在克隆的項目目錄的根目錄下運行以下命令來啟動 Compose 堆棧

$ docker compose up -d


片刻之后,應(yīng)用程序?qū)硬⑦\行。

您可以通過選擇容器來檢查日志wiremock-node-docker:

測試 Mock API。

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


它將返回帶有模擬數(shù)據(jù)的以下預(yù)設(shè)響應(yīng):

{"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,您可以使用映射文件定義預(yù)設(shè)響應(yīng)。對于此請求,模擬數(shù)據(jù)在 JSON 文件中定義 wiremock-endpoint/mappings/getWeather/getWeatherBengaluru.json。

有關(guān)存根預(yù)制響應(yīng)的更多信息,請參閱 WireMock 文檔。

在開發(fā)中使用 WireMock

現(xiàn)在您已經(jīng)嘗試了 WireMock,讓我們在開發(fā)和測試中使用它。在此示例中,您將使用具有 Node.js 后端的示例應(yīng)用程序。此應(yīng)用程序堆棧具有以下配置:

本地開發(fā)環(huán)境:Node.js 后端和 WireMock 運行的環(huán)境。
Node.js Backend:代表處理 HTTP 請求的后端應(yīng)用程序。
外部 AccuWeather API:獲取實時天氣數(shù)據(jù)的真實 API。
WireMock:測試期間模擬 API 響應(yīng)的模擬服務(wù)器。它作為 Docker 容器運行。

展示 WireMock 開發(fā)中的架構(gòu)圖

在開發(fā)中,Node.js 后端向 WireMock 發(fā)送請求,而不是實際的 AccuWeather API。
在生產(chǎn)中,它直接連接到實時 AccuWeather API 獲取真實數(shù)據(jù)。

在本地開發(fā)中使用模擬數(shù)據(jù)

讓我們設(shè)置一個 Node 應(yīng)用程序來向 WireMock 容器而不是實際的 AccuWeather API 發(fā)送請求。

先決條件

安裝 Node.js 和 npm
確保 WireMock 容器已啟動并正在運行(請參閱 啟動 Wiremock

按照以下步驟設(shè)置非容器化的 Node 應(yīng)用程序:

導(dǎo)航到accuweather-api目錄

確保您位于package.json文件所在的目錄中。

設(shè)置環(huán)境變量。

打開目錄.env下的文件accuweather-api/。刪除舊條目并確保它只包含以下一行。

API_ENDPOINT_BASE=http://localhost:8080

這將告訴你的 Node.js 應(yīng)用程序使用 WireMock 服務(wù)器進行 API 調(diào)用。

檢查應(yīng)用程序入口點

該應(yīng)用程序的主文件是index.js,位于accuweather-api/src/api目錄中。
此文件啟動getWeather.js模塊,這對您的 Node.js 應(yīng)用程序至關(guān)重要。它使用dotenv包從文件中加載環(huán)境變量.env。
根據(jù) 的值A(chǔ)PI_ENDPOINT_BASE,應(yīng)用程序?qū)⒄埱舐酚傻?WireMock 服務(wù)器 ( http://localhost:8080) 或 AccuWeather API。在此設(shè)置中,它使用 WireMock 服務(wù)器。
代碼確保ACCUWEATHER_API_KEY僅當(dāng)應(yīng)用程序未使用 WireMock 時才需要,從而提高效率并避免錯誤。

啟動 Node 服務(wù)器

在啟動 Node 服務(wù)器之前,請通過運行確保已經(jīng)安裝了 package.json 文件中列出的節(jié)點包npm install。

npm install
npm run start


您應(yīng)該看到以下輸出:

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

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

輸出表明您的 Node 應(yīng)用程序已成功啟動。保持此終端窗口打開。

測試模擬 API

打開一個新的終端窗口并運行以下命令來測試模擬的 API:

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


您應(yīng)該看到以下輸出:

{"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 應(yīng)用程序現(xiàn)在已成功將請求路由到 WireMock 容器并接收模擬響應(yīng)

您可能已經(jīng)注意到,您正在嘗試使用http://localhost:5001URL 而不是 port 8080。這是因為您的 Node.js 應(yīng)用程序正在 port 上運行5001,并且它將請求路由到正在監(jiān)聽 port 的 WireMock 容器8080。

顯示在 Docker Desktop 上運行的 WireMock 容器的日志的圖表

顯示在 Docker Desktop 上運行的 WireMock 容器的圖表

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 測試
    +關(guān)注

    關(guān)注

    8

    文章

    5046

    瀏覽量

    126259
  • API
    API
    +關(guān)注

    關(guān)注

    2

    文章

    1469

    瀏覽量

    61701
  • 開發(fā)
    +關(guān)注

    關(guān)注

    0

    文章

    361

    瀏覽量

    40776
  • 前端
    +關(guān)注

    關(guān)注

    1

    文章

    188

    瀏覽量

    17703
收藏 人收藏

    評論

    相關(guān)推薦

    華納:如何使用 Netperf 進行網(wǎng)絡(luò)性能測試

    要使用Netperf進行網(wǎng)絡(luò)性能測試,您需要按照以下步驟操作: ?1. 安裝Netperf 首先,您需要在客戶端和服務(wù)器端安裝Netperf??梢酝ㄟ^以下命令安裝: ```bash wget -c
    的頭像 發(fā)表于 10-16 16:09 ?189次閱讀
    <b class='flag-5'>華納</b><b class='flag-5'>云</b>:如何使用 Netperf 進行網(wǎng)絡(luò)性能<b class='flag-5'>測試</b>?

    使用API Post測試阿里物聯(lián)網(wǎng)平臺動態(tài)注冊

    使用API Post測試阿里物聯(lián)網(wǎng)平臺動態(tài)注冊
    的頭像 發(fā)表于 10-05 19:08 ?136次閱讀
    使用<b class='flag-5'>API</b> Post<b class='flag-5'>測試</b>阿里<b class='flag-5'>云</b>物聯(lián)網(wǎng)平臺動態(tài)注冊

    開發(fā)者空間實踐指導(dǎo):基于 3 大 PaaS 主流服務(wù)輕松實現(xiàn)文字轉(zhuǎn)換語音

    【摘要】 基于 CodeArts API 設(shè)計語音合成接口,基于 API Explorer 調(diào)試接口,并利用 CodeArts IDE 實現(xiàn)數(shù)據(jù)流轉(zhuǎn)換為音頻 案例簡介 開發(fā)者將在主機
    的頭像 發(fā)表于 09-13 16:25 ?380次閱讀
    <b class='flag-5'>開發(fā)</b>者空間實踐指導(dǎo):基于 3 大 PaaS 主流<b class='flag-5'>服務(wù)</b>輕松實現(xiàn)文字轉(zhuǎn)換語音

    恒訊科技分析:使用顯卡服務(wù)器進行游戲開發(fā)有哪些優(yōu)勢和劣勢?

    使用顯卡服務(wù)器進行游戲開發(fā)具有一系列的優(yōu)勢和劣勢: 一、優(yōu)勢: 1、高性能計算:顯卡服務(wù)器基于GPU的架構(gòu)提供了強大的并行處理能力,這對
    的頭像 發(fā)表于 09-04 13:20 ?242次閱讀

    如何理解計算?

    計算的工作原理是什么? 計算和傳統(tǒng)IT技術(shù)的區(qū)別? 華納如何幫助您實現(xiàn)計算? 什么是
    發(fā)表于 08-16 17:02

    美國輕量服務(wù)器是什么?和服務(wù)器有哪些區(qū)別

    服務(wù)器以其低成本、輕運維的特點,特別適用于中小型應(yīng)用、開發(fā)/測試環(huán)境、個人項目或博客等相對輕量級的工作負載。美國,多家
    的頭像 發(fā)表于 08-16 11:20 ?321次閱讀

    重塑服務(wù),華為 Flexus X 實例破解服務(wù)傳統(tǒng)難題

    服務(wù)的局限性也逐步顯現(xiàn),成為阻礙企業(yè)發(fā)展的障礙。華為深刻洞察中小企業(yè)和開發(fā)服務(wù)應(yīng)用
    的頭像 發(fā)表于 08-12 09:54 ?518次閱讀
    重塑<b class='flag-5'>云</b><b class='flag-5'>服務(wù)</b>,華為<b class='flag-5'>云</b> Flexus X 實例破解<b class='flag-5'>云</b><b class='flag-5'>服務(wù)</b>傳統(tǒng)難題

    華納:了解美國輕量服務(wù)器的成本效益優(yōu)勢

    在當(dāng)前競爭激烈的商業(yè)環(huán)境,企業(yè)需要尋求更具成本效益的IT基礎(chǔ)設(shè)施解決方案。美國輕量服務(wù)器作為一種新興的計算技術(shù),正逐漸成為企業(yè)的首選。本文將深入探討其
    的頭像 發(fā)表于 08-07 15:37 ?187次閱讀

    華為發(fā)布 CodeArts API,為 API 護航

    4 月 10 日,華為正式發(fā)布 API 全生命周期管理一體化協(xié)作平臺 CodeArts API,支持開發(fā)者高效實現(xiàn) API 設(shè)計、
    的頭像 發(fā)表于 05-09 23:17 ?459次閱讀
    華為<b class='flag-5'>云</b>發(fā)布 CodeArts <b class='flag-5'>API</b>,為 <b class='flag-5'>API</b> 護航

    OpenAI API Key獲取與充值教程:助開發(fā)者解鎖GPT-4.0 API

    人工智能的浪潮,OpenAI 的 GPT-4.0 模型以其卓越的語言理解和生成能力引領(lǐng)了技術(shù)的新高潮。為開發(fā)者提供了強大的工具來創(chuàng)建更智能、更互動的應(yīng)用。本文將詳細介紹如何獲取并充值
    的頭像 發(fā)表于 04-28 16:35 ?9441次閱讀
    OpenAI <b class='flag-5'>API</b> Key獲取與充值教程:助<b class='flag-5'>開發(fā)</b>者解鎖GPT-4.0 <b class='flag-5'>API</b>

    模擬后端是什么意思

    模擬后端,軟件開發(fā)測試領(lǐng)域,通常是指使用工具或技術(shù)來模擬實際后端服務(wù)的行為。這樣做的主要目的
    的頭像 發(fā)表于 03-15 15:58 ?585次閱讀

    HarmonyOS應(yīng)用性能與功耗測試

    ,進入到控制臺。 選擇或者創(chuàng)建一個項目,如果新創(chuàng)建一個項目,注意選擇 HarmonyOS。 進入項目空間,左側(cè)導(dǎo)航欄中選擇 測試服務(wù) > HarmonyOS
    發(fā)表于 12-26 16:39

    HarmonyOS應(yīng)用兼容穩(wěn)定性測試

    ,使用華為開發(fā)者帳號進行登錄。 點擊界面上的“從這里開始”按鈕,進入到控制臺。 選擇或者創(chuàng)建一個項目,如果新創(chuàng)建一個項目,注意選擇 HarmonyOS。 進入項目空間,左側(cè)導(dǎo)航欄中選擇 測試
    發(fā)表于 12-25 10:56

    鴻蒙原生應(yīng)用/元服務(wù)開發(fā)-新版本端一體化模板體驗反饋

    一、前言 云端一體化模板是基于Serverless服務(wù)構(gòu)建的一套模板,提供了應(yīng)用生態(tài)常見場景需求的代碼實現(xiàn),開發(fā)者可將所需能力快速部署和集成到自己的應(yīng)用。 二、準備 體驗最新的遠端一體化模板,需要
    發(fā)表于 12-05 14:57

    在線研討會 | Jetson 上使用 Metropolis API 和微服務(wù)加速邊緣人工智能開發(fā)

    ? API 和微服務(wù)集合具備強大功能,能夠幫助開發(fā)者們加快 NVIDIA Jetson 平臺上開發(fā)和部署視覺 AI 的速度,使用時從數(shù)年縮
    的頭像 發(fā)表于 11-10 17:35 ?246次閱讀
    在線研討會 | <b class='flag-5'>在</b> Jetson 上使用 Metropolis <b class='flag-5'>API</b> 和微<b class='flag-5'>服務(wù)</b>加速邊緣人工智能<b class='flag-5'>開發(fā)</b>