reactjs - 如何使用 msw 有条件地模拟错误响应
问题描述
我正在处理的 UI 根据收到的响应以不同的方式呈现。我想在收到 a4xx
和5xx
响应时测试 UI。
我的 api 处理程序看起来像:
import { rest } from 'msw';
import { items } from './apiValues';
export const handlers = [
rest.get('/items/', (_req, res, ctx) => res(ctx.status(200), ctx.json(items))),
];
这将始终返回一个2xx
响应,使其无法在收到4xx
或5xx
响应时测试 UI,除非我手动更改处理程序,这很累人。
如何测试测试4xx
和5xx
响应?
解决方案
使用搜索参数来控制get
请求的响应。
传入一个变量req.body
来控制请求的响应是否成功post
。
请参阅条件响应
import { setupWorker, rest } from 'msw';
const worker = setupWorker(
rest.get('/items/', (req, res, ctx) => {
const error = req.url.searchParams.get('error')
// error response
if(error === 'network') {
return res(
ctx.status(200),
ctx.json({
errorMessage: 'Network error',
}),
)
}
// successful response
return res(ctx.status(200), ctx.json(items));
}),
)
推荐阅读
- mql4 - 如何将数据从我的网站发送到 MT4 软件?
- java - 如何根据用户输入将任何内容显示到数组中?
- php - 使用“@”和“.”发送电子邮件地址 (点)作为参数 - Laravel
- vb.net - 如何在 VB.Net 中使用 WSDL
- jquery - TextOnly jquery select2输入
- matlab - 向量化 for 循环操作
- r - R函数基于两列分割数据?
- html - PNG图像文件未显示在html中
- python - 根据范围从列表中提取浮点数
- python - Python。我很好奇我解决这个编程问题的解决方案是否奇怪?另外,有更多经验的人可能会提供什么合适的解决方案