我有一些测试,这些测试使用fetch-mock
模拟正文中带有参数的发布请求。
我可以模拟请求,但找不到根据请求的主体返回响应的方法。
让我说我有一个发帖请求:
const body = {flag : true} // can be either true or false
const configInit: RequestInit = {
method: "POST",
credentials: "include",
body: JSON.stringify(body)
};
fetch(REQUEST_URL, configInit)
当前我的模拟如下:
//.. some definithion of responseA and responseB
fetchMock.post(
REQUEST_URL,
(url, opts) => opts && opts.body && opts.body.flag ? responseA : responseB ,
{ overwriteRoutes: true }
);
但是它说opts.body是一个'BodyInit'对象,没有属性“ flag”。
我找到了docomentation,但我找不到任何正确的方法来做到这一点。
如何从请求到模拟响应获取参数?
这是最佳做法吗?也许我应该使用FunctionMatcher
分隔请求(这对我也不起作用)?
答案 0 :(得分:0)
我不确定是哪种模式,但是我的快速解决方案只是调用BodyInit提供的toString()方法,例如:
fetchMock.get('someUrl', (_, opts) => {
const body = JSON.parse(opts.body.toString())
})
抱歉,答案不完整,足以使您如愿以偿