【问题标题】:Callback response in Jest is different than normal responseJest 中的回调响应与正常响应不同
【发布时间】:2021-08-04 10:14:50
【问题描述】:

我有一个在 React Native 中调用端点的方法,我想用玩笑来测试它。一切都是异步的,它可以工作,但是在测试端调用函数时的回调响应与在应用程序中正常调用函数时的响应完全不同。

通常,我的响应是这样的 JSON:

"_bodyBlob":{
      "_data":{
         "__collector":[
            "Object"
         ],
         "blobId":"43564E12-D797-4971-80C7-A6E06D690F8A",
         "name":"login",
         "offset":0,
         "size":784,
         "type":"application/json"
      }
   },
   "_bodyInit":{
      "_data":{
         "__collector":[
            "Object"
         ],
         "blobId":"43564E12-D797-4971-80C7-A6E06D690F8A",
         "name":"login",
         "offset":0,
         "size":784,
         "type":"application/json"
      }
   },
   "bodyUsed":false,
   "headers":{
      "map":{
         //a lot of private data here and others
      }
   },
   "ok":true,
   "status":200,
   "statusText":"",
   "type":"default",
   "url":"private url"
}

但是Jest调用方法时返回的响应是这样的:

Response {
      size: 0,
      timeout: 0,
      [Symbol(Body internals)]: { body: <Buffer >, disturbed: false, error: null },
      [Symbol(Response internals)]: {
        url: undefined,
        status: 200,
        statusText: 'OK',
        headers: Headers { [Symbol(map)]: [Object: null prototype] },
        counter: undefined
      }
    }

Which is not even a JSON.

这是一个 normal response 用于当 Jest 调用该方法时的回调,或者在我调用该函数时可能出现问题,因为它都是 asynchronous

感谢您的宝贵时间。

【问题讨论】:

    标签: react-native jestjs jest-fetch-mock


    【解决方案1】:

    在您的 Jest 测试中,响应似乎是 javascript 响应对象:https://developer.mozilla.org/en-US/docs/Web/API/Response

    为了从中取出 JSON,您需要应用它的 json() 方法,如下例所示:https://developer.mozilla.org/en-US/docs/Web/API/Response#an_ajax_call

    所以一旦你得到响应对象,就这样做:

    const jsonValue = await response.json();
    

    值在开玩笑和实际应用程序中不同的原因可能是在您的实际应用程序中,处理响应的库可能会在将响应传递给您之前调用 json 对象。

    【讨论】:

    • 我在我的基本方法中将响应转换为 JSON,它在实时应用程序中按预期返回,但不知何故,模拟函数不能以这种方式工作。我接近解决方案,稍后我会发布。谢谢
    猜你喜欢
    • 1970-01-01
    • 2020-07-17
    • 2015-02-06
    • 1970-01-01
    • 2016-02-07
    • 1970-01-01
    • 2022-07-06
    • 2018-02-01
    • 1970-01-01
    相关资源
    最近更新 更多