当前位置: 首页 > news >正文

使用mockttp库模拟HTTP服务器和客户端进行单元测试

简介

mockttp 是一个用于在 Node.js 中模拟 HTTP 服务器和客户端的库。它可以帮助我们进行单元测试和集成测试,而不需要实际发送 HTTP 请求。

安装

npm install mockttp @types/mockttp

模拟http服务测试

首先导入并创建一个本地服务器实例

import { getLocal } from 'mockttp';
const mockServer = getLocal();

在测试前需要启动服务

mockServer.start(8080);

然后通过mockServer的forGet方法模拟一个GET请求,并设置响应状态码和响应体,这里其实就是我们期望模拟的请求和返回码与内容

await mockServer.forGet('/my-mocked-path').thenReply(200, '{"message": "ok"}');

接下来使用fetch方法发送一个请求,然后断言返回的内容是否是我们期望的

const response = await fetch(`http://localhost:${mockServer.port}/my-mocked-path`,
);
expect(await response.text()).toEqual('{"message": "ok"}');

最后停止服务

mockServer.stop()

最后,看一个完整的测试例子

my.spec.ts

import { getLocal } from 'mockttp';const mockServer = getLocal();describe('Mockttp test', () => {beforeEach(() => mockServer.start(8080));afterEach(() => mockServer.stop());it('test get', async () => {await mockServer.forGet('/my-mocked-path').thenReply(200, '{"message": "ok"}');const response = await fetch(`http://localhost:${mockServer.port}/my-mocked-path`,);expect(await response.text()).toEqual('{"message": "ok"}');});it('test post', async () => {await mockServer.forPost('/my-mocked-path').withBody(JSON.stringify({ key: 'value' })).thenReply(200, '{"message": "ok"}');const response = await fetch(`http://localhost:${mockServer.port}/my-mocked-path`,{method: 'POST',body: JSON.stringify({ key: 'value' }),},);expect(await response.text()).toEqual('{"message": "ok"}');});
});
http://www.lryc.cn/news/531847.html

相关文章:

  • 解决每次打开终端都需要source ~/.bashrc的问题(记录)
  • UE5 蓝图学习计划 - Day 14:搭建基础游戏场景
  • C++常用拷贝和替换算法
  • 取消和确认按钮没有显示的问题
  • Python安居客二手小区数据爬取(2025年)
  • Java/Kotlin HashMap 等集合引发 ConcurrentModificationException
  • 【Day31 LeetCode】动态规划DP Ⅳ
  • Unity 2D实战小游戏开发跳跳鸟 - 记录显示最高分
  • Ollama AI 开发助手完全指南:从入门到实践
  • Racecar Gym
  • 代码随想录36 动态规划
  • 离散时间傅里叶变换(DTFT)公式详解:周期性与连续性剖析
  • 深度学习|表示学习|卷积神经网络|Batch Normalization在干什么?|19
  • Go基础之环境搭建
  • echarts、canvas这种渲染耗时的工作能不能放在webworker中做?
  • Android学习21 -- launcher
  • antd pro框架,使用antd组件修改组件样式
  • 响应式编程_05 Project Reactor 框架
  • RabbitMQ 从入门到精通:从工作模式到集群部署实战(一)
  • 导出依赖的几种方法
  • CS 与 BS 架构的差异
  • OpenCV YOLOv11实时视频车辆计数线:让车辆进出有条理!
  • 配置@别名路径,把@/ 解析为 src/
  • java 进阶教程_Java进阶教程 第2版
  • Windows Docker笔记-安装docker
  • hot100(7)
  • DeepSeek辅助学术写作【对比概念】效果如何?
  • 基础相对薄弱怎么考研
  • kakailio官网推荐的安装流程ubuntu 22.04
  • DeepSeek:全栈开发者视角下的AI革命者