【问题标题】:How to get request's body with fetch-mock如何使用 fetch-mock 获取请求的正文
【发布时间】:2019-09-11 12:58:06
【问题描述】:

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

【问题讨论】:

    标签: typescript fetch fetch-mock


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-23
      • 2018-08-30
      • 1970-01-01
      • 2015-08-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多