如何使用fetch-mock获取请求的正文

时间:2019-09-11 12:58:06

标签: typescript fetch fetch-mock

我有一些测试,这些测试使用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分隔请求(这对我也不起作用)?

1 个答案:

答案 0 :(得分:0)

我不确定是哪种模式,但是我的快速解决方案只是调用BodyInit提供的toString()方法,例如:

fetchMock.get('someUrl', (_, opts) => {
  const body = JSON.parse(opts.body.toString())
})

抱歉,答案不完整,足以使您如愿以偿