Reactjs 如何使用msw有条件地模拟错误响应
我正在处理的UI会根据收到的响应以不同的方式呈现。我想在收到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
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更新了答案。