Reactjs 如何使用msw有条件地模拟错误响应

Reactjs 如何使用msw有条件地模拟错误响应,reactjs,testing,jestjs,msw,Reactjs,Testing,Jestjs,Msw,我正在处理的UI会根据收到的响应以不同的方式呈现。我想在收到4xx和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))), ]; 如果收到4xx或5x

我正在处理的UI会根据收到的响应以不同的方式呈现。我想在收到
4xx
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))),
];
如果收到
4xx
5xx
响应,这将始终返回
2xx
响应,使其无法测试UI,除非我手动更改处理程序,这很累人


如何测试
4xx
5xx
响应的测试?

使用搜索参数控制您对
get
请求的响应

req.body
中传递一个变量,以控制
post
请求的响应是否成功

从“msw”导入{setupWorker,rest};
const worker=setupWorker(
rest.get(“/items/”,(req、res、ctx)=>{
const error=req.url.searchParams.get('error')
//错误响应
如果(错误==‘网络’){
返回res(
ctx.状态(200),
ctx.json({
errorMessage:'网络错误',
}),
)
}
//成功响应
返回res(ctx.status(200),ctx.json(items));
}),
)

这个条件是什么样的?我正在试图弄清楚如何使用相同的url返回不同的响应,就像成功的响应
rest.get('/items/',(_-req,res,ctx)=>res(ctx.status(200),ctx.json(items))
或者失败的响应
rest.get('/items/,(_-req,res,ctx)=>res res.networkError('networkerror')
那么,在测试依赖于请求的组件时,如何选择成功或不成功的响应。由于无法在get请求中传递正文,因此它如何适用于get请求。@Timothyliver更新了答案。