2

我有一些测试用于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”对象并且没有属性“标志”。

我找到了文档,但我在任何地方都找不到正确的方法。如何从请求中获取参数到我的模拟响应?这种方式是最佳做法吗?也许我应该使用 a 分隔请求FunctionMatcher(这对我也不起作用)?

4

1 回答 1

0

我不确定最好的模式或任何东西,但我的快速解决方案就是调用 BodyInit 提供的 toString() 方法,例如:

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

抱歉,答案不完整,希望能让您顺利上路

于 2020-10-29T15:29:51.740 回答