【问题标题】:I'm getting following error in Jest ReferenceError: Response is not defined我在 Jest ReferenceError 中收到以下错误:未定义响应
【发布时间】:2020-08-19 13:42:19
【问题描述】:

首先我遇到了一个打字稿问题,我的模拟数据与响应类型不匹配。然后我尝试使用 Response 构造函数创建模拟数据并得到了那个错误。

我有以下代码

const HttpRequest = async function (
    url: string,
    options: RequestInit,
): Promise<Response> {
    try {
        return await fetch(url, options);
    } catch (error) {
        return null;
    }
};

export default HttpRequest;

以下测试:

const res = new Response();
window.fetch = jest.fn(
    () => new Promise((resolve) => {
        return resolve(res);
    })
);

describe('HttpService', () => {
    it('fetchWithFeedback', async () => {
        const data = await HttpRequest('/api', { method: 'GET' });
        expect(data).toEqual(res);
    });
});

【问题讨论】:

  • 您好像忘记在问题中留下您的错误?
  • 不,我得到的错误是 ReferenceError: Response is not defined
  • 您测试的是哪个环境? Response 是可用的全局对象吗?
  • 我正在测试浏览器环境。它应该在窗口对象上可用。
  • “响应”在 jest 电子浏览器中不可用,所以你必须模拟它

标签: reactjs typescript testing jestjs


【解决方案1】:

改变

  const changeField = (field, id, value) => {
    const newPropertyData = { ...propertyData };
    if (newPropertyData.id === id) {
      newPropertyData.field = value;
    }
  };

  const changeField = (field, id, value) => {
    if (propertyData.id === id) {
      setPropertyData({ ...propertyData, [field]: value })
    }
  };

您没有在 onChange 中更新您的状态,因此它永远无法更新仍然是“”的值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-21
    • 2021-12-12
    • 1970-01-01
    • 2021-12-24
    • 2021-06-21
    • 2022-11-17
    相关资源
    最近更新 更多