首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用jest- fetch -模拟模拟获取响应

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

Stack Overflow用户
提问于 2022-06-22 15:59:15
回答 2查看 2.1K关注 0票数 5

我在react函数组件中调用api。我正在编写组件的单元测试用例。我嘲弄过使用玩笑-假的。

global.fetch = require('jest-fetch-mock');

Component.ts

代码语言:javascript
复制
const Component = () => {

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

}

有人知道如何在jest中模拟这个组件的fetch响应吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-06-25 14:08:29

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

  • 在项目的根目录中创建一个文件setupJest.js文件,内容如下.

代码语言:javascript
复制
require('jest-fetch-mock').enableMocks()

  • setupJest.js文件添加到jest.config.js所在的jest.config.js或package.json中。

代码语言:javascript
复制
"jest": {
  "automock": false,
  "setupFiles": [
    "./setupJest.js"
  ]
}

现在可以在全局范围内使用fetchfetchMock

代码语言:javascript
复制
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())
  })
});
票数 1
EN

Stack Overflow用户

发布于 2022-06-22 16:08:58

下面是相同使用axios的小示例

代码语言:javascript
复制
jest.mock("axios");
 it('mock data', async () => {
        render(<Abc />);
        axios.get.mockResolvedValueOnce(data); // data is your static object
        // rest code goes here
        
    });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72718623

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档