我有一些测试使用fetch-mock来模拟主体中带有参数的post请求。
我可以模拟请求,但我找不到根据请求的正文返回响应的方法。
假设我有一个post请求:
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)目前我的mock看起来是这样的:
//.. 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来分离请求(这对我也不起作用)?
发布于 2020-10-29 23:29:52
我不确定最好的模式或其他方法,但我的快速解决方案是调用BodyInit提供的toString()方法,例如:
fetchMock.get('someUrl', (_, opts) => {
const body = JSON.parse(opts.body.toString())
})很抱歉,我的答案不完整,希望能让您上路
https://stackoverflow.com/questions/57889748
复制相似问题