推荐答案
使用 nock 模拟 HTTP 请求
// www.javascriptcn.com code example
const nock = require('nock');
// 模拟一个 GET 请求
nock('https://api.example.com')
.get('/users')
.reply(200, { users: ['user1', 'user2'] });
// 发起请求
fetch('https://api.example.com/users')
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error(error));使用 Polly.js 模拟 HTTP 请求
// www.javascriptcn.com code example
const { Polly } = require('@pollyjs/core');
const NodeHttpAdapter = require('@pollyjs/adapter-node-http');
const FSPersister = require('@pollyjs/persister-fs');
Polly.register(NodeHttpAdapter);
Polly.register(FSPersister);
const polly = new Polly('my-test', {
adapters: ['node-http'],
persister: 'fs',
persisterOptions: {
fs: {
recordingsDir: '__recordings__'
}
}
});
const { server } = polly;
// 模拟一个 GET 请求
server.get('https://api.example.com/users').intercept((req, res) => {
res.status(200).json({ users: ['user1', 'user2'] });
});
// 发起请求
fetch('https://api.example.com/users')
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error(error));本题详细解读
nock 的使用
安装 nock:首先需要通过 npm 安装 nock 库。
npm install nock
模拟请求:使用
nock创建一个模拟的 HTTP 请求。nock允许你指定请求的 URL、方法、响应状态码和响应体。发起请求:使用
fetch或其他 HTTP 客户端发起请求,nock 会拦截这个请求并返回你定义的模拟响应。
Polly.js 的使用
安装 Polly.js:首先需要通过 npm 安装 Polly.js 及其适配器和持久化工具。
npm install @pollyjs/core @pollyjs/adapter-node-http @pollyjs/persister-fs
配置 Polly:创建一个
Polly实例,并配置适配器和持久化工具。NodeHttpAdapter用于在 Node.js 环境中拦截 HTTP 请求,FSPersister用于将录制的请求保存到文件系统中。模拟请求:使用
server对象来定义模拟的 HTTP 请求。你可以指定请求的 URL、方法、响应状态码和响应体。发起请求:使用
fetch或其他 HTTP 客户端发起请求,Polly.js 会拦截这个请求并返回你定义的模拟响应。
总结
- nock 是一个轻量级的库,适合简单的 HTTP 请求模拟。
- Polly.js 提供了更强大的功能,如请求录制和回放,适合复杂的测试场景。