javascript - 如何使用 jest-fetch-mock 模拟获取响应

标签 javascript reactjs react-native unit-testing jest-fetch-mock

我在 react 功能组件中调用 api。我正在编写组件的单元测试用例。我使用 jest-fetch-mock 模拟了 fetch。global.fetch = require('jest-fetch-mock');组件.ts

const Component = () => {

    useEffect(() => {
      return fetch(
          'url',
        )
          .then(response => response.json())
          .then(json => {
            setApiResult(json);
            setFilterResult(json?.videos);
          })
          .catch(error => {
            console.error(error);
          });
    }, []);

}
有谁知道如何开玩笑地模拟这个组件的 fetch 响应。

最佳答案

这个来自jest-fetch-mock直接文档

  • 创建文件setupJest.js项目根目录下的文件,内容如下。

  • require('jest-fetch-mock').enableMocks()
    
  • 添加 setupJest.js文件到 jest.config.js 或 package.json 无论你的 jest 配置是什么。

  • "jest": {
      "automock": false,
      "setupFiles": [
        "./setupJest.js"
      ]
    }
    
    现在您可以使用 fetchfetchMock在全局范围内
    describe('testing Component', () => {
      beforeEach(() => {
        fetch.resetMocks()
      })
     
      it('testing something...', () => {
        fetch.mockResponseOnce(JSON.stringify({ data: '12345' }))
        const container = render (<Component/>)
        // expect statement can be wrong.
        expect(container.getByText(/12345/).toBeDefined())
      })
    });
    

    关于javascript - 如何使用 jest-fetch-mock 模拟获取响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72718623/

    相关文章:

    javascript - flex 布局内可调整大小的窗口需要 SVG 滚动条

    android - CameraRoll 不显示 Android 上的图像

    react-native - 使用输入选项 React Native 打开 Modal 并更新 cardItem 文本字段

    javascript - 循环遍历表并保存其内容

    javascript - fatal error : CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory error

    javascript - JS 绑定(bind)函数和函数调用运算符的性质

    javascript - React Native 怪异的 flex 行为

    javascript - 在 Javascript 函数执行期间更新 DOM

    reactjs - 在 React SPA 中打开图元标记和 SEO

    javascript - Prop 值未显示在 ReactJS 函数的渲染顶部